mirror of
https://github.com/SimpleMobileTools/Simple-SMS-Messenger.git
synced 2025-06-05 21:49:22 +02:00
Properly start contact view intent
This commit is contained in:
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user