Set explicit destination for CALL_PRIVILEGED
bug:8950263
Change-Id: I8e40298a20e513012082c7e166326ed9cdaa952b
diff --git a/src/com/android/contacts/ContactsUtils.java b/src/com/android/contacts/ContactsUtils.java
index 05eb4f6..1e51aae 100644
--- a/src/com/android/contacts/ContactsUtils.java
+++ b/src/com/android/contacts/ContactsUtils.java
@@ -16,6 +16,7 @@
package com.android.contacts;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
@@ -46,6 +47,9 @@
private static final String TAG = "ContactsUtils";
private static final String WAIT_SYMBOL_AS_STRING = String.valueOf(PhoneNumberUtils.WAIT);
+ private static final ComponentName CALL_INTENT_DESTINATION = new ComponentName(
+ "com.android.phone", "com.android.phone.PrivilegedOutgoingCallBroadcaster");
+
private static int sThumbnailSize = -1;
// TODO find a proper place for the canonical version of these
@@ -268,6 +272,12 @@
if (callOrigin != null) {
intent.putExtra(DialtactsActivity.EXTRA_CALL_ORIGIN, callOrigin);
}
+
+ // Set phone as an explicit component of CALL_PRIVILEGED intent.
+ // Setting destination explicitly prevents other apps from capturing this Intent since,
+ // unlike SendBroadcast, there is no API for specifying a permission on startActivity.
+ intent.setComponent(CALL_INTENT_DESTINATION);
+
return intent;
}