Merge "Use TelecomManager#placeCall to call from Emergency Info screen." into pi-dev
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index d6aff15..74daafe 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -18,6 +18,7 @@
android:sharedUserId="com.android.emergency.uid">
<uses-permission android:name="android.permission.CALL_PHONE" />
+ <uses-permission android:name="android.permission.CALL_PRIVILEGED" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.MANAGE_USERS" />
diff --git a/src/com/android/emergency/preferences/ContactPreference.java b/src/com/android/emergency/preferences/ContactPreference.java
index 8ef58c4..ff5e3cc 100644
--- a/src/com/android/emergency/preferences/ContactPreference.java
+++ b/src/com/android/emergency/preferences/ContactPreference.java
@@ -32,6 +32,7 @@
import android.support.annotation.Nullable;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceViewHolder;
+import android.telecom.TelecomManager;
import android.text.BidiFormatter;
import android.text.TextDirectionHeuristics;
import android.util.AttributeSet;
@@ -219,19 +220,11 @@
* Calls the contact.
*/
public void callContact() {
- Intent callIntent =
- new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + mContact.getPhoneNumber()));
- PackageManager packageManager = getContext().getPackageManager();
- List<ResolveInfo> infos =
- packageManager.queryIntentActivities(callIntent, PackageManager.MATCH_SYSTEM_ONLY);
- if (infos == null || infos.isEmpty()) {
- return;
- }
- callIntent.setComponent(new ComponentName(infos.get(0).activityInfo.packageName,
- infos.get(0).activityInfo.name));
-
+ // Use TelecomManager to place the call; this APK has CALL_PRIVILEGED permission so it will
+ // be able to call emergency numbers.
+ TelecomManager tm = (TelecomManager) getContext().getSystemService(Context.TELECOM_SERVICE);
+ tm.placeCall(Uri.parse("tel:" + mContact.getPhoneNumber()), null);
MetricsLogger.action(getContext(), MetricsEvent.ACTION_CALL_EMERGENCY_CONTACT);
- getContext().startActivity(callIntent);
}
/**