diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 48387ba..e57b3b4 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -109,9 +109,7 @@
                   android:authorities="carrier_identification"
                   android:exported="true"
                   android:singleUser="true"
-                  android:multiprocess="false"
-                  android:readPermission="android.permission.READ_PRIVILEGED_PHONE_STATE"
-                  android:writePermission="android.permission.MODIFY_PHONE_STATE" />
+                  android:multiprocess="false" />
 
         <service
             android:name=".TelephonyBackupAgent$DeferredSmsMmsRestoreService"
diff --git a/src/com/android/providers/telephony/CarrierIdProvider.java b/src/com/android/providers/telephony/CarrierIdProvider.java
index 4b4ce8f..ed590fc 100644
--- a/src/com/android/providers/telephony/CarrierIdProvider.java
+++ b/src/com/android/providers/telephony/CarrierIdProvider.java
@@ -22,6 +22,7 @@
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.content.UriMatcher;
+import android.content.pm.PackageManager;
 import android.database.Cursor;
 import android.database.MatrixCursor;
 import android.database.sqlite.SQLiteDatabase;
@@ -178,6 +179,7 @@
     @Override
     public Cursor query(Uri uri, String[] projectionIn, String selection,
                         String[] selectionArgs, String sortOrder) {
+        checkReadPermission();
         if (VDBG) {
             Log.d(TAG, "query:"
                     + " uri=" + uri
@@ -203,6 +205,7 @@
 
     @Override
     public Uri insert(Uri uri, ContentValues values) {
+        checkWritePermission();
         final long row = getWritableDatabase().insertOrThrow(CARRIER_ID_TABLE, null, values);
         if (row > 0) {
             final Uri newUri = ContentUris.withAppendedId(CarrierIdentification.CONTENT_URI, row);
@@ -214,6 +217,7 @@
 
     @Override
     public int delete(Uri uri, String selection, String[] selectionArgs) {
+        checkWritePermission();
         if (VDBG) {
             Log.d(TAG, "delete:"
                     + " uri=" + uri
@@ -231,6 +235,7 @@
 
     @Override
     public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
+        checkWritePermission();
         if (VDBG) {
             Log.d(TAG, "update:"
                     + " uri=" + uri
@@ -510,4 +515,22 @@
         buffer.flush();
         return buffer.toByteArray();
     }
+
+    private void checkReadPermission() {
+        int status = getContext().checkCallingOrSelfPermission(
+                "android.permission.READ_PRIVILEGED_PHONE_STATE");
+        if (status == PackageManager.PERMISSION_GRANTED) {
+            return;
+        }
+        throw new SecurityException("No permission to read Carrier Identification provider");
+    }
+
+    private void checkWritePermission() {
+        int status = getContext().checkCallingOrSelfPermission(
+                "android.permission.MODIFY_PHONE_STATE");
+        if (status == PackageManager.PERMISSION_GRANTED) {
+            return;
+        }
+        throw new SecurityException("No permission to write Carrier Identification provider");
+    }
 }
