Restrict access to the resolution PendingIntent created by
EuiccController to EuiccResolutionUiDispatcherActivity
Bug: 156097472
Bug: 155094269
Fix: 156097472
Test: Local, with jpd@'s PoC app
Change-Id: I76a9eb55d8321ea695594693580be468522e4de8
Merged-In: I76a9eb55d8321ea695594693580be468522e4de8
(cherry picked from commit 0126084de146b51a842d7604cddb3303f46cade7)
diff --git a/src/java/com/android/internal/telephony/euicc/EuiccController.java b/src/java/com/android/internal/telephony/euicc/EuiccController.java
index 0d58d80..cf16bfb 100644
--- a/src/java/com/android/internal/telephony/euicc/EuiccController.java
+++ b/src/java/com/android/internal/telephony/euicc/EuiccController.java
@@ -19,6 +19,7 @@
import android.annotation.Nullable;
import android.app.AppOpsManager;
import android.app.PendingIntent;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
@@ -64,6 +65,11 @@
private static final int ERROR =
EuiccManager.EMBEDDED_SUBSCRIPTION_RESULT_ERROR;
+ /** Restrictions limiting access to the PendingIntent */
+ private static final String RESOLUTION_ACTIVITY_PACKAGE_NAME = "com.android.phone";
+ private static final String RESOLUTION_ACTIVITY_CLASS_NAME =
+ "com.android.phone.euicc.EuiccResolutionUiDispatcherActivity";
+
private static EuiccController sInstance;
private final Context mContext;
@@ -876,6 +882,9 @@
public void addResolutionIntent(Intent extrasIntent, String resolutionAction,
String callingPackage, EuiccOperation op) {
Intent intent = new Intent(EuiccManager.ACTION_RESOLVE_ERROR);
+ intent.setPackage(RESOLUTION_ACTIVITY_PACKAGE_NAME);
+ intent.setComponent(new ComponentName(
+ RESOLUTION_ACTIVITY_PACKAGE_NAME, RESOLUTION_ACTIVITY_CLASS_NAME));
intent.putExtra(EuiccManager.EXTRA_EMBEDDED_SUBSCRIPTION_RESOLUTION_ACTION,
resolutionAction);
intent.putExtra(EuiccService.EXTRA_RESOLUTION_CALLING_PACKAGE, callingPackage);