mirror of
https://github.com/SimpleMobileTools/Simple-Dialer.git
synced 2025-02-19 04:50:53 +01:00
make sure View Contact Details works on private contacts too
This commit is contained in:
parent
b63f1e6495
commit
0e115c35af
@ -5,7 +5,6 @@ import android.content.Intent
|
|||||||
import android.content.pm.ShortcutInfo
|
import android.content.pm.ShortcutInfo
|
||||||
import android.graphics.drawable.Icon
|
import android.graphics.drawable.Icon
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.provider.ContactsContract
|
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import android.util.TypedValue
|
import android.util.TypedValue
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
@ -26,6 +25,7 @@ import com.simplemobiletools.commons.models.SimpleContact
|
|||||||
import com.simplemobiletools.commons.views.MyRecyclerView
|
import com.simplemobiletools.commons.views.MyRecyclerView
|
||||||
import com.simplemobiletools.dialer.R
|
import com.simplemobiletools.dialer.R
|
||||||
import com.simplemobiletools.dialer.activities.SimpleActivity
|
import com.simplemobiletools.dialer.activities.SimpleActivity
|
||||||
|
import com.simplemobiletools.dialer.extensions.startContactDetailsIntent
|
||||||
import com.simplemobiletools.dialer.interfaces.RefreshItemsListener
|
import com.simplemobiletools.dialer.interfaces.RefreshItemsListener
|
||||||
|
|
||||||
class ContactsAdapter(activity: SimpleActivity, var contacts: ArrayList<SimpleContact>, recyclerView: MyRecyclerView, val refreshItemsListener: RefreshItemsListener? = null,
|
class ContactsAdapter(activity: SimpleActivity, var contacts: ArrayList<SimpleContact>, recyclerView: MyRecyclerView, val refreshItemsListener: RefreshItemsListener? = null,
|
||||||
@ -106,11 +106,7 @@ class ContactsAdapter(activity: SimpleActivity, var contacts: ArrayList<SimpleCo
|
|||||||
|
|
||||||
private fun viewContactDetails() {
|
private fun viewContactDetails() {
|
||||||
val contact = getSelectedItems().firstOrNull() ?: return
|
val contact = getSelectedItems().firstOrNull() ?: return
|
||||||
val lookupKey = SimpleContactsHelper(activity).getContactLookupKey((contact).rawId.toString())
|
activity.startContactDetailsIntent(contact)
|
||||||
val publicUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey)
|
|
||||||
activity.runOnUiThread {
|
|
||||||
activity.launchViewContactIntent(publicUri)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun askConfirmDelete() {
|
private fun askConfirmDelete() {
|
||||||
|
@ -1,15 +1,17 @@
|
|||||||
package com.simplemobiletools.dialer.extensions
|
package com.simplemobiletools.dialer.extensions
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
|
import android.app.Activity
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
import android.provider.ContactsContract
|
||||||
import android.telecom.PhoneAccount
|
import android.telecom.PhoneAccount
|
||||||
import android.telecom.PhoneAccountHandle
|
import android.telecom.PhoneAccountHandle
|
||||||
import android.telecom.TelecomManager
|
import android.telecom.TelecomManager
|
||||||
import com.simplemobiletools.commons.extensions.isDefaultDialer
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.extensions.launchCallIntent
|
import com.simplemobiletools.commons.helpers.*
|
||||||
import com.simplemobiletools.commons.extensions.telecomManager
|
import com.simplemobiletools.commons.models.SimpleContact
|
||||||
import com.simplemobiletools.commons.helpers.PERMISSION_READ_PHONE_STATE
|
import com.simplemobiletools.dialer.R
|
||||||
import com.simplemobiletools.dialer.activities.SimpleActivity
|
import com.simplemobiletools.dialer.activities.SimpleActivity
|
||||||
import com.simplemobiletools.dialer.dialogs.SelectSIMDialog
|
import com.simplemobiletools.dialer.dialogs.SelectSIMDialog
|
||||||
|
|
||||||
@ -23,6 +25,35 @@ fun SimpleActivity.startCallIntent(recipient: String) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// handle private contacts differently, only Simple Contacts Pro can open them
|
||||||
|
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)
|
||||||
|
`package` = if (isPackageInstalled(simpleContacts)) simpleContacts else simpleContactsDebug
|
||||||
|
setDataAndType(ContactsContract.Contacts.CONTENT_LOOKUP_URI, "vnd.android.cursor.dir/person")
|
||||||
|
if (resolveActivity(packageManager) != null) {
|
||||||
|
startActivity(this)
|
||||||
|
} else {
|
||||||
|
toast(R.string.no_app_found)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ensureBackgroundThread {
|
||||||
|
val lookupKey = SimpleContactsHelper(this).getContactLookupKey((contact).rawId.toString())
|
||||||
|
val publicUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey)
|
||||||
|
runOnUiThread {
|
||||||
|
launchViewContactIntent(publicUri)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// used at devices with multiple SIM cards
|
// used at devices with multiple SIM cards
|
||||||
@SuppressLint("MissingPermission")
|
@SuppressLint("MissingPermission")
|
||||||
fun SimpleActivity.getHandleToUse(intent: Intent?, phoneNumber: String, callback: (handle: PhoneAccountHandle) -> Unit) {
|
fun SimpleActivity.getHandleToUse(intent: Intent?, phoneNumber: String, callback: (handle: PhoneAccountHandle) -> Unit) {
|
||||||
|
@ -2,7 +2,6 @@ package com.simplemobiletools.dialer.fragments
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
|
||||||
import android.provider.ContactsContract
|
import android.provider.ContactsContract
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import com.reddit.indicatorfastscroll.FastScrollItemIndicator
|
import com.reddit.indicatorfastscroll.FastScrollItemIndicator
|
||||||
@ -14,6 +13,7 @@ import com.simplemobiletools.dialer.R
|
|||||||
import com.simplemobiletools.dialer.activities.SimpleActivity
|
import com.simplemobiletools.dialer.activities.SimpleActivity
|
||||||
import com.simplemobiletools.dialer.adapters.ContactsAdapter
|
import com.simplemobiletools.dialer.adapters.ContactsAdapter
|
||||||
import com.simplemobiletools.dialer.extensions.config
|
import com.simplemobiletools.dialer.extensions.config
|
||||||
|
import com.simplemobiletools.dialer.extensions.startContactDetailsIntent
|
||||||
import com.simplemobiletools.dialer.interfaces.RefreshItemsListener
|
import com.simplemobiletools.dialer.interfaces.RefreshItemsListener
|
||||||
import kotlinx.android.synthetic.main.fragment_letters_layout.view.*
|
import kotlinx.android.synthetic.main.fragment_letters_layout.view.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@ -101,33 +101,7 @@ class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPag
|
|||||||
if (currAdapter == null) {
|
if (currAdapter == null) {
|
||||||
ContactsAdapter(activity as SimpleActivity, contacts, fragment_list, this) {
|
ContactsAdapter(activity as SimpleActivity, contacts, fragment_list, this) {
|
||||||
val contact = it as SimpleContact
|
val contact = it as SimpleContact
|
||||||
|
activity?.startContactDetailsIntent(contact)
|
||||||
// handle private contacts differently, only Simple Contacts Pro can open them
|
|
||||||
val simpleContacts = "com.simplemobiletools.contacts.pro"
|
|
||||||
val simpleContactsDebug = "com.simplemobiletools.contacts.pro.debug"
|
|
||||||
if (it.rawId > 1000000 && it.contactId > 1000000 && it.rawId == it.contactId &&
|
|
||||||
(context.isPackageInstalled(simpleContacts) || context.isPackageInstalled(simpleContactsDebug))) {
|
|
||||||
Intent().apply {
|
|
||||||
action = Intent.ACTION_VIEW
|
|
||||||
putExtra(CONTACT_ID, it.rawId)
|
|
||||||
putExtra(IS_PRIVATE, true)
|
|
||||||
`package` = if (context.isPackageInstalled(simpleContacts)) simpleContacts else simpleContactsDebug
|
|
||||||
setDataAndType(ContactsContract.Contacts.CONTENT_LOOKUP_URI, "vnd.android.cursor.dir/person")
|
|
||||||
if (resolveActivity(context.packageManager) != null) {
|
|
||||||
activity?.startActivity(this)
|
|
||||||
} else {
|
|
||||||
context.toast(R.string.no_app_found)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
ensureBackgroundThread {
|
|
||||||
val lookupKey = SimpleContactsHelper(activity!!).getContactLookupKey((contact).rawId.toString())
|
|
||||||
val publicUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey)
|
|
||||||
activity?.runOnUiThread {
|
|
||||||
activity!!.launchViewContactIntent(publicUri)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}.apply {
|
}.apply {
|
||||||
fragment_list.adapter = this
|
fragment_list.adapter = this
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user