Properly start contact view intent

This commit is contained in:
Naveen
2022-11-26 03:24:18 +05:30
parent c25cfa7588
commit 51f9662820
4 changed files with 39 additions and 41 deletions

View File

@ -1,24 +1,18 @@
package com.simplemobiletools.smsmessenger.activities package com.simplemobiletools.smsmessenger.activities
import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.provider.ContactsContract
import androidx.core.content.res.ResourcesCompat import androidx.core.content.res.ResourcesCompat
import com.simplemobiletools.commons.extensions.adjustAlpha import com.simplemobiletools.commons.extensions.adjustAlpha
import com.simplemobiletools.commons.extensions.applyColorFilter import com.simplemobiletools.commons.extensions.applyColorFilter
import com.simplemobiletools.commons.extensions.getProperTextColor import com.simplemobiletools.commons.extensions.getProperTextColor
import com.simplemobiletools.commons.extensions.launchViewContactIntent
import com.simplemobiletools.commons.helpers.HIGHER_ALPHA import com.simplemobiletools.commons.helpers.HIGHER_ALPHA
import com.simplemobiletools.commons.helpers.NavigationIcon import com.simplemobiletools.commons.helpers.NavigationIcon
import com.simplemobiletools.commons.helpers.SimpleContactsHelper
import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import com.simplemobiletools.commons.models.SimpleContact import com.simplemobiletools.commons.models.SimpleContact
import com.simplemobiletools.smsmessenger.R import com.simplemobiletools.smsmessenger.R
import com.simplemobiletools.smsmessenger.adapters.ContactsAdapter import com.simplemobiletools.smsmessenger.adapters.ContactsAdapter
import com.simplemobiletools.smsmessenger.dialogs.RenameConversationDialog import com.simplemobiletools.smsmessenger.dialogs.RenameConversationDialog
import com.simplemobiletools.smsmessenger.extensions.conversationsDB import com.simplemobiletools.smsmessenger.extensions.*
import com.simplemobiletools.smsmessenger.extensions.getThreadParticipants
import com.simplemobiletools.smsmessenger.extensions.renameConversation
import com.simplemobiletools.smsmessenger.helpers.THREAD_ID import com.simplemobiletools.smsmessenger.helpers.THREAD_ID
import com.simplemobiletools.smsmessenger.models.Conversation import com.simplemobiletools.smsmessenger.models.Conversation
import kotlinx.android.synthetic.main.activity_conversation_details.* import kotlinx.android.synthetic.main.activity_conversation_details.*
@ -77,10 +71,11 @@ class ConversationDetailsActivity : SimpleActivity() {
private fun setupParticipants() { private fun setupParticipants() {
val adapter = ContactsAdapter(this, participants, participants_recyclerview) { val adapter = ContactsAdapter(this, participants, participants_recyclerview) {
val contact = it as SimpleContact val contact = it as SimpleContact
val lookupKey = SimpleContactsHelper(this).getContactLookupKey(contact.rawId.toString()) val address = contact.phoneNumbers.first().normalizedNumber
val publicUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey) getContactFromAddress(address) { simpleContact ->
runOnUiThread { if (simpleContact != null) {
launchViewContactIntent(publicUri) startContactDetailsIntent(simpleContact)
}
} }
} }
participants_recyclerview.adapter = adapter participants_recyclerview.adapter = adapter

View File

@ -1286,31 +1286,6 @@ class ThreadActivity : SimpleActivity() {
return participants return participants
} }
fun startContactDetailsIntent(contact: SimpleContact) {
val simpleContacts = "com.simplemobiletools.contacts.pro"
val simpleContactsDebug = "com.simplemobiletools.contacts.pro.debug"
if (contact.rawId > 1000000 && contact.contactId > 1000000 && contact.rawId == contact.contactId &&
(isPackageInstalled(simpleContacts) || isPackageInstalled(simpleContactsDebug))
) {
Intent().apply {
action = Intent.ACTION_VIEW
putExtra(CONTACT_ID, contact.rawId)
putExtra(IS_PRIVATE, true)
setPackage(if (isPackageInstalled(simpleContacts)) simpleContacts else simpleContactsDebug)
setDataAndType(ContactsContract.Contacts.CONTENT_LOOKUP_URI, "vnd.android.cursor.dir/person")
launchActivityIntent(this)
}
} else {
ensureBackgroundThread {
val lookupKey = SimpleContactsHelper(this).getContactLookupKey((contact).rawId.toString())
val publicUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey)
runOnUiThread {
launchViewContactIntent(publicUri)
}
}
}
}
fun saveMMS(mimeType: String, path: String) { fun saveMMS(mimeType: String, path: String) {
hideKeyboard() hideKeyboard()
lastAttachmentUri = path lastAttachmentUri = path

View File

@ -283,7 +283,7 @@ class ThreadAdapter(
val contact = message.participants.first() val contact = message.participants.first()
context.getContactFromAddress(contact.phoneNumbers.first().normalizedNumber) { context.getContactFromAddress(contact.phoneNumbers.first().normalizedNumber) {
if (it != null) { if (it != null) {
(activity as ThreadActivity).startContactDetailsIntent(it) activity.startContactDetailsIntent(it)
} }
} }
} }

View File

@ -4,10 +4,13 @@ import android.app.Activity
import android.content.ActivityNotFoundException import android.content.ActivityNotFoundException
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import com.simplemobiletools.commons.extensions.getMimeType import android.provider.ContactsContract
import com.simplemobiletools.commons.extensions.hideKeyboard import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.extensions.showErrorToast import com.simplemobiletools.commons.helpers.CONTACT_ID
import com.simplemobiletools.commons.extensions.toast import com.simplemobiletools.commons.helpers.IS_PRIVATE
import com.simplemobiletools.commons.helpers.SimpleContactsHelper
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import com.simplemobiletools.commons.models.SimpleContact
import com.simplemobiletools.smsmessenger.R import com.simplemobiletools.smsmessenger.R
import java.util.* import java.util.*
@ -48,3 +51,28 @@ fun Activity.launchViewIntent(uri: Uri, mimetype: String, filename: String) {
} }
} }
} }
fun Activity.startContactDetailsIntent(contact: SimpleContact) {
val simpleContacts = "com.simplemobiletools.contacts.pro"
val simpleContactsDebug = "com.simplemobiletools.contacts.pro.debug"
if (contact.rawId > 1000000 && contact.contactId > 1000000 && contact.rawId == contact.contactId &&
(isPackageInstalled(simpleContacts) || isPackageInstalled(simpleContactsDebug))
) {
Intent().apply {
action = Intent.ACTION_VIEW
putExtra(CONTACT_ID, contact.rawId)
putExtra(IS_PRIVATE, true)
setPackage(if (isPackageInstalled(simpleContacts)) simpleContacts else simpleContactsDebug)
setDataAndType(ContactsContract.Contacts.CONTENT_LOOKUP_URI, "vnd.android.cursor.dir/person")
launchActivityIntent(this)
}
} else {
ensureBackgroundThread {
val lookupKey = SimpleContactsHelper(this).getContactLookupKey((contact).rawId.toString())
val publicUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey)
runOnUiThread {
launchViewContactIntent(publicUri)
}
}
}
}