diff --git a/src/com/android/server/telecom/TelecomServiceImpl.java b/src/com/android/server/telecom/TelecomServiceImpl.java
index 95a7e75..2656547 100644
--- a/src/com/android/server/telecom/TelecomServiceImpl.java
+++ b/src/com/android/server/telecom/TelecomServiceImpl.java
@@ -50,11 +50,6 @@
  * Implementation of the ITelecom interface.
  */
 public class TelecomServiceImpl extends ITelecomService.Stub {
-    private static final String REGISTER_PROVIDER_OR_SUBSCRIPTION =
-            android.Manifest.permission.REGISTER_PROVIDER_OR_SUBSCRIPTION;
-    private static final String REGISTER_CONNECTION_MANAGER =
-            android.Manifest.permission.REGISTER_CONNECTION_MANAGER;
-
     /** The context. */
     private Context mContext;
 
@@ -303,9 +298,11 @@
         try {
             enforcePhoneAccountModificationForPackage(
                     account.getAccountHandle().getComponentName().getPackageName());
-            if (account.hasCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER) ||
-                account.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION)) {
-                enforceRegisterProviderOrSubscriptionPermission();
+            if (account.hasCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER)) {
+                enforceRegisterCallProviderPermission();
+            }
+            if (account.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION)) {
+                enforceRegisterSimSubscriptionPermission();
             }
             if (account.hasCapabilities(PhoneAccount.CAPABILITY_CONNECTION_MANAGER)) {
                 enforceRegisterConnectionManagerPermission();
@@ -597,12 +594,16 @@
         enforceFeature(PackageManager.FEATURE_CONNECTION_SERVICE);
     }
 
-    private void enforceRegisterProviderOrSubscriptionPermission() {
-        enforcePermission(REGISTER_PROVIDER_OR_SUBSCRIPTION);
+    private void enforceRegisterCallProviderPermission() {
+        enforcePermission(android.Manifest.permission.REGISTER_CALL_PROVIDER);
+    }
+
+    private void enforceRegisterSimSubscriptionPermission() {
+        enforcePermission(android.Manifest.permission.REGISTER_SIM_SUBSCRIPTION);
     }
 
     private void enforceRegisterConnectionManagerPermission() {
-        enforcePermission(REGISTER_CONNECTION_MANAGER);
+        enforcePermission(android.Manifest.permission.REGISTER_CONNECTION_MANAGER);
     }
 
     private void enforceReadPermission() {
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index 9c09a40..d0cdf5f 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -21,9 +21,9 @@
 
     <!-- Test connection service outgoing video preview. -->
     <uses-permission android:name="android.permission.CAMERA" />
-    <uses-permission
-            android:name="com.android.server.telecom.permission.REGISTER_PROVIDER_OR_SUBSCRIPTION" />
     <uses-permission android:name="android.permission.CONTROL_INCALL_EXPERIENCE" />
+    <uses-permission android:name="android.permission.REGISTER_CALL_PROVIDER" />
+    <uses-permission android:name="android.permission.REGISTER_SIM_SUBSCRIPTION" />
 
     <application android:label="@string/app_name"
                  android:debuggable="true">
