From 75a4714c3d3e7709c0a7684d821ab28e83a0dbcf Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 27 Oct 2020 14:16:33 +0100 Subject: [PATCH] use proper app icons at handling WhatsApp actions --- .../pro/activities/ViewContactActivity.kt | 2 +- .../pro/dialogs/ChooseSocialDialog.kt | 9 ++++++ .../contacts/pro/extensions/Context.kt | 28 +++++++++++++++++-- .../contacts/pro/models/SocialAction.kt | 2 +- .../main/res/drawable/ic_logo_whatsapp.xml | 18 ------------ .../main/res/layout/item_choose_social.xml | 10 +++---- .../res/layout/item_view_contact_source.xml | 2 +- 7 files changed, 42 insertions(+), 29 deletions(-) delete mode 100644 app/src/main/res/drawable/ic_logo_whatsapp.xml diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ViewContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ViewContactActivity.kt index 3ae65659..592be336 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ViewContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ViewContactActivity.kt @@ -538,7 +538,7 @@ class ViewContactActivity : ContactActivity() { } if (value.toLowerCase() == WHATSAPP) { - contact_source_image.setImageResource(R.drawable.ic_logo_whatsapp) + contact_source_image.setImageDrawable(getPackageDrawable(WHATSAPP_PACKAGE)) contact_source_image.beVisible() contact_source_image.setOnClickListener { showWhatsAppActions() diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/ChooseSocialDialog.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/ChooseSocialDialog.kt index 51283e35..f211f7dd 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/ChooseSocialDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/ChooseSocialDialog.kt @@ -5,8 +5,10 @@ import android.view.ViewGroup import android.widget.RadioGroup import android.widget.RelativeLayout import androidx.appcompat.app.AlertDialog +import com.simplemobiletools.commons.extensions.beGone import com.simplemobiletools.commons.extensions.setupDialogStuff import com.simplemobiletools.contacts.pro.R +import com.simplemobiletools.contacts.pro.extensions.getPackageDrawable import com.simplemobiletools.contacts.pro.models.SocialAction import kotlinx.android.synthetic.main.dialog_choose_social.view.* import kotlinx.android.synthetic.main.item_choose_social.view.* @@ -24,6 +26,13 @@ class ChooseSocialDialog(val activity: Activity, actions: ArrayList { val projection = arrayOf( ContactsContract.Data._ID, ContactsContract.Data.DATA3, - ContactsContract.Data.MIMETYPE + ContactsContract.Data.MIMETYPE, + ContactsContract.Data.ACCOUNT_TYPE_AND_DATA_SET ) val socialActions = ArrayList() @@ -344,8 +347,29 @@ fun Context.getWhatsAppActions(id: Int): ArrayList { val label = cursor.getStringValue(ContactsContract.Data.DATA3) val realID = cursor.getLongValue(ContactsContract.Data._ID) - val socialAction = SocialAction(curActionId++, type, label, mimetype, realID) + val packageName = cursor.getStringValue(ContactsContract.Data.ACCOUNT_TYPE_AND_DATA_SET) + val socialAction = SocialAction(curActionId++, type, label, mimetype, realID, packageName) socialActions.add(socialAction) } return socialActions } + +fun Context.getPackageDrawable(packageName: String): Drawable? { + var drawable: Drawable? = null + try { + // try getting the properly colored launcher icons + val launcher = getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps + val activityList = launcher.getActivityList(packageName, android.os.Process.myUserHandle())[0] + drawable = activityList.getBadgedIcon(0) + } catch (ignored: Exception) { + } + + if (drawable == null) { + try { + drawable = packageManager.getApplicationIcon(packageName) + } catch (ignored: Exception) { + } + } + + return drawable +} diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/models/SocialAction.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/models/SocialAction.kt index 6a5aedc9..a0064fa4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/models/SocialAction.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/models/SocialAction.kt @@ -1,3 +1,3 @@ package com.simplemobiletools.contacts.pro.models -data class SocialAction(var actionId: Int, var type: Int, var label: String, var mimetype: String, val dataId: Long) +data class SocialAction(var actionId: Int, var type: Int, var label: String, var mimetype: String, val dataId: Long, val packageName: String) diff --git a/app/src/main/res/drawable/ic_logo_whatsapp.xml b/app/src/main/res/drawable/ic_logo_whatsapp.xml deleted file mode 100644 index 08433044..00000000 --- a/app/src/main/res/drawable/ic_logo_whatsapp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/app/src/main/res/layout/item_choose_social.xml b/app/src/main/res/layout/item_choose_social.xml index a4c6a35b..f15dd78d 100644 --- a/app/src/main/res/layout/item_choose_social.xml +++ b/app/src/main/res/layout/item_choose_social.xml @@ -10,21 +10,19 @@ + android:padding="@dimen/medium_margin" + android:src="@drawable/ic_phone_vector" /> + tools:src="@drawable/ic_phone_vector" />