diff options
author | Danny Baumann <dannybaumann@web.de> | 2018-06-25 10:19:42 +0200 |
---|---|---|
committer | Michael Bestas <mkbestas@lineageos.org> | 2019-12-11 20:07:34 +0200 |
commit | 979cc2a20075e4792240e1dcfcf084d6551ee634 (patch) | |
tree | 93ced94acb01bf9b1a900da2994ad1376317fac3 | |
parent | f8eafde5149af6c383217cb7fdac67c3826558d0 (diff) | |
download | packages_apps_Contacts-979cc2a20075e4792240e1dcfcf084d6551ee634.tar.gz packages_apps_Contacts-979cc2a20075e4792240e1dcfcf084d6551ee634.tar.bz2 packages_apps_Contacts-979cc2a20075e4792240e1dcfcf084d6551ee634.zip |
Allow calling contacts via specific phone accounts.
Change-Id: I237ab8d825e3234290fa3d371e087a68756c37b9
-rw-r--r-- | res/values/lineage_strings.xml | 2 | ||||
-rw-r--r-- | src/com/android/contacts/CallUtil.java | 21 | ||||
-rw-r--r-- | src/com/android/contacts/quickcontact/QuickContactActivity.java | 32 |
3 files changed, 53 insertions, 2 deletions
diff --git a/res/values/lineage_strings.xml b/res/values/lineage_strings.xml index c091809a4..97ccb8e08 100644 --- a/res/values/lineage_strings.xml +++ b/res/values/lineage_strings.xml @@ -19,4 +19,6 @@ <!--Explanation with icon of Drawer in Contacts. Your medical information ie. Date of birth, Bloodtype, allergic details can be recorded for reference. --> <string name="menu_emergency_information_txt">Emergency information</string> + <string name="call_via_template">Call via <xliff:g id="account">%1$s</xliff:g></string> + </resources>
\ No newline at end of file diff --git a/src/com/android/contacts/CallUtil.java b/src/com/android/contacts/CallUtil.java index bba1faa94..e47e48a62 100644 --- a/src/com/android/contacts/CallUtil.java +++ b/src/com/android/contacts/CallUtil.java @@ -38,6 +38,7 @@ import com.android.contactsbind.FeedbackHelper; import com.android.contactsbind.experiments.Flags; import com.android.phone.common.PhoneConstants; +import java.util.ArrayList; import java.util.List; /** @@ -189,6 +190,26 @@ public class CallUtil { } /** + * Returns a list of phone accounts that are able to call to numbers with the supplied scheme + */ + public static List<PhoneAccount> getCallCapablePhoneAccounts(Context context, String scheme) { + if (!PermissionsUtil.hasPermission(context, + android.Manifest.permission.READ_PHONE_STATE)) { + return null; + } + TelecomManager tm = (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE); + final ArrayList<PhoneAccount> accounts = new ArrayList<>(); + + for (PhoneAccountHandle handle : tm.getCallCapablePhoneAccounts()) { + final PhoneAccount account = tm.getPhoneAccount(handle); + if (account != null && account.supportsUriScheme(scheme)) { + accounts.add(account); + } + } + return accounts; + } + + /** * Determines if one of the call capable phone accounts defined supports calling with a subject * specified. * diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java index 6d206b6a5..81a894694 100644 --- a/src/com/android/contacts/quickcontact/QuickContactActivity.java +++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java @@ -113,6 +113,7 @@ import com.android.contacts.activities.RequestPermissionsActivity; import com.android.contacts.compat.CompatUtils; import com.android.contacts.compat.EventCompat; import com.android.contacts.compat.MultiWindowCompat; +import com.android.contacts.compat.PhoneNumberUtilsCompat; import com.android.contacts.detail.ContactDisplayUtils; import com.android.contacts.dialog.CallSubjectDialog; import com.android.contacts.editor.ContactEditorFragment; @@ -429,6 +430,7 @@ public class QuickContactActivity extends ContactsActivity { static final int COPY_TEXT = 0; static final int CLEAR_DEFAULT = 1; static final int SET_DEFAULT = 2; + static final int CALL_VIA = 3; } private final OnCreateContextMenuListener mEntryContextMenuListener = @@ -439,7 +441,13 @@ public class QuickContactActivity extends ContactsActivity { return; } final EntryContextMenuInfo info = (EntryContextMenuInfo) menuInfo; + final String selectedMimeType = info.getMimeType(); menu.setHeaderTitle(info.getCopyText()); + + if (Phone.CONTENT_ITEM_TYPE.equals(selectedMimeType)) { + addPhoneAccountsToMenu(QuickContactActivity.this, menu, info); + } + menu.add(ContextMenu.NONE, ContextMenuIds.COPY_TEXT, ContextMenu.NONE, getString(R.string.copy_text)); @@ -448,8 +456,6 @@ public class QuickContactActivity extends ContactsActivity { return; } - final String selectedMimeType = info.getMimeType(); - // Defaults to true will only enable the detail to be copied to the clipboard. boolean onlyOneOfMimeType = true; @@ -469,6 +475,25 @@ public class QuickContactActivity extends ContactsActivity { ContextMenu.NONE, getString(R.string.set_default)); } } + + private void addPhoneAccountsToMenu(Context context, + Menu menu, EntryContextMenuInfo info) { + final String number = PhoneNumberUtilsCompat.normalizeNumber(info.getCopyText()); + final List<PhoneAccount> accounts = CallUtil.getCallCapablePhoneAccounts(context, + PhoneAccount.SCHEME_TEL); + if (accounts == null || accounts.size() <= 1) { + return; + } + + for (PhoneAccount account : accounts) { + final String text = context.getString(R.string.call_via_template, + account.getLabel()); + final Intent intent = CallUtil.getCallWithSubjectIntent(number, + account.getAccountHandle(), null); + menu.add(ContextMenu.NONE, ContextMenuIds.CALL_VIA, ContextMenu.NONE, text) + .setIntent(intent); + } + } }; @Override @@ -496,6 +521,9 @@ public class QuickContactActivity extends ContactsActivity { menuInfo.getId()); this.startService(clearIntent); return true; + case ContextMenuIds.CALL_VIA: + startActivity(item.getIntent()); + return true; default: throw new IllegalArgumentException("Unknown menu option " + item.getItemId()); } |