From f939f77323385300b07d88f0fa195aea1c4ca5ad Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 5 Dec 2019 12:34:46 +0100 Subject: [PATCH] fix #464, properly handle some new contact related intents --- app/src/main/AndroidManifest.xml | 6 ++++ .../activities/InsertOrEditContactActivity.kt | 31 +++++++++++++++++-- .../contacts/pro/activities/SimpleActivity.kt | 10 ++++++ .../contacts/pro/extensions/Context.kt | 2 +- .../contacts/pro/helpers/Constants.kt | 1 + 5 files changed, 47 insertions(+), 3 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 440b683b..69fd7dd9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -170,6 +170,12 @@ + + + + + + ) { ContactsAdapter(this, contacts, null, LOCATION_INSERT_OR_EDIT, null, existing_contact_list, existing_contact_fastscroller) { val contact = it as Contact + val phoneNumber = getPhoneNumberFromIntent(intent) ?: "" + val email = getEmailFromIntent(intent) ?: "" + Intent(applicationContext, EditContactActivity::class.java).apply { data = getContactPublicUri(contact) action = ADD_NEW_CONTACT_NUMBER - putExtra(KEY_PHONE, getPhoneNumberFromIntent(intent)) + + if (phoneNumber.isNotEmpty()) { + putExtra(KEY_PHONE, phoneNumber) + } + + if (email.isNotEmpty()) { + putExtra(KEY_EMAIL, email) + } + putExtra(IS_PRIVATE, contact.isPrivate()) startActivityForResult(this, START_EDIT_ACTIVITY) } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/SimpleActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/SimpleActivity.kt index 0ff042c7..0f8dd845 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/SimpleActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/SimpleActivity.kt @@ -3,11 +3,13 @@ package com.simplemobiletools.contacts.pro.activities import android.annotation.TargetApi import android.content.ContentValues import android.content.Intent +import android.net.Uri import android.os.Build import android.telecom.TelecomManager import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.toast import com.simplemobiletools.contacts.pro.R +import com.simplemobiletools.contacts.pro.helpers.KEY_MAILTO import com.simplemobiletools.contacts.pro.helpers.KEY_PHONE import com.simplemobiletools.contacts.pro.helpers.REQUEST_CODE_SET_DEFAULT_DIALER @@ -53,6 +55,14 @@ open class SimpleActivity : BaseSimpleActivity() { return null } + protected fun getEmailFromIntent(intent: Intent): String? { + return if (intent.dataString?.startsWith("$KEY_MAILTO:") == true) { + Uri.decode(intent.dataString!!.substringAfter("$KEY_MAILTO:").trim()) + } else { + null + } + } + @TargetApi(Build.VERSION_CODES.M) protected fun launchSetDefaultDialerIntent() { Intent(TelecomManager.ACTION_CHANGE_DEFAULT_DIALER).putExtra(TelecomManager.EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME, packageName).apply { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/extensions/Context.kt index 81978f54..c7072406 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/extensions/Context.kt @@ -66,7 +66,7 @@ fun Context.editContact(contact: Contact) { fun Context.sendEmailIntent(recipient: String) { Intent(Intent.ACTION_SENDTO).apply { - data = Uri.fromParts("mailto", recipient, null) + data = Uri.fromParts(KEY_MAILTO, recipient, null) if (resolveActivity(packageManager) != null) { startActivity(this) } else { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/Constants.kt index 91edd52d..1a122b0f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/Constants.kt @@ -31,6 +31,7 @@ const val REQUEST_CODE_SET_DEFAULT_DIALER = 1 const val KEY_PHONE = "phone" const val KEY_NAME = "name" const val KEY_EMAIL = "email" +const val KEY_MAILTO = "mailto" const val LOCATION_CONTACTS_TAB = 0 const val LOCATION_FAVORITES_TAB = 1