diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt index 031f561f..8b57dafd 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt @@ -87,6 +87,7 @@ class EditContactActivity : ContactActivity() { if (wasActivityInitialized) { menu.findItem(R.id.delete).isVisible = contact?.id != 0 menu.findItem(R.id.share).isVisible = contact?.id != 0 + menu.findItem(R.id.open_with).isVisible = contact?.id != 0 && contact?.source != SMT_PRIVATE } return true } @@ -94,8 +95,9 @@ class EditContactActivity : ContactActivity() { override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.save -> saveContact() - R.id.delete -> deleteContact() R.id.share -> shareContact() + R.id.open_with -> openWith() + R.id.delete -> deleteContact() else -> return super.onOptionsItemSelected(item) } return true @@ -224,6 +226,14 @@ class EditContactActivity : ContactActivity() { invalidateOptionsMenu() } + private fun openWith() { + Intent().apply { + action = Intent.ACTION_EDIT + data = getContactPublicUri(contact!!) + startActivity(this) + } + } + private fun startCropPhotoIntent(uri: Uri?) { if (uri == null) { toast(R.string.unknown_error_occurred) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SelectContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SelectContactActivity.kt index 675e2ad1..4e1dfdee 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SelectContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SelectContactActivity.kt @@ -17,6 +17,7 @@ import com.simplemobiletools.contacts.adapters.SelectContactsAdapter import com.simplemobiletools.contacts.dialogs.ChangeSortingDialog import com.simplemobiletools.contacts.dialogs.FilterContactSourcesDialog import com.simplemobiletools.contacts.extensions.config +import com.simplemobiletools.contacts.extensions.getContactPublicUri import com.simplemobiletools.contacts.helpers.ContactsHelper import com.simplemobiletools.contacts.helpers.SMT_PRIVATE import com.simplemobiletools.contacts.models.Contact @@ -135,8 +136,7 @@ class SelectContactActivity : SimpleActivity() { Uri.withAppendedPath(ContactsContract.Data.CONTENT_URI, contactId) } else -> { - val lookupKey = ContactsHelper(this).getContactLookupKey(contact.id.toString()) - Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey) + getContactPublicUri(contact) } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/ViewContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/ViewContactActivity.kt index 8650d636..a0cd2ade 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/ViewContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/ViewContactActivity.kt @@ -2,7 +2,6 @@ package com.simplemobiletools.contacts.activities import android.content.Intent import android.graphics.drawable.ColorDrawable -import android.net.Uri import android.os.Bundle import android.provider.ContactsContract import android.view.Menu @@ -158,12 +157,9 @@ class ViewContactActivity : ContactActivity() { } private fun openWith() { - val lookupKey = ContactsHelper(this).getContactLookupKey(contact?.id.toString()) - val uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey) - Intent().apply { action = ContactsContract.QuickContact.ACTION_QUICK_CONTACT - data = uri + data = getContactPublicUri(contact!!) startActivity(this) } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/extensions/Activity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/extensions/Activity.kt index a02e7101..e7b4eabb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/extensions/Activity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/extensions/Activity.kt @@ -2,6 +2,7 @@ package com.simplemobiletools.contacts.extensions import android.content.Intent import android.net.Uri +import android.provider.ContactsContract import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.dialogs.RadioGroupDialog import com.simplemobiletools.commons.extensions.sharePathIntent @@ -175,3 +176,8 @@ fun BaseSimpleActivity.removeContactsFromGroup(contacts: ArrayList, gro dbHelper.removeContactsFromGroup(contacts, groupId) } } + +fun BaseSimpleActivity.getContactPublicUri(contact: Contact): Uri { + val lookupKey = ContactsHelper(this).getContactLookupKey(contact.id.toString()) + return Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey) +} diff --git a/app/src/main/res/menu/menu_edit_contact.xml b/app/src/main/res/menu/menu_edit_contact.xml index 12208f19..ed26a9c6 100644 --- a/app/src/main/res/menu/menu_edit_contact.xml +++ b/app/src/main/res/menu/menu_edit_contact.xml @@ -11,6 +11,10 @@ android:icon="@drawable/ic_share" android:title="@string/share" app:showAsAction="ifRoom"/> +