Merge "Allow search index provider use local permission."
diff --git a/src/com/android/phone/PhoneSearchIndexablesProvider.java b/src/com/android/phone/PhoneSearchIndexablesProvider.java
index c066acd..22786a3 100644
--- a/src/com/android/phone/PhoneSearchIndexablesProvider.java
+++ b/src/com/android/phone/PhoneSearchIndexablesProvider.java
@@ -31,6 +31,7 @@
 import android.content.Context;
 import android.database.Cursor;
 import android.database.MatrixCursor;
+import android.os.Binder;
 import android.os.UserManager;
 import android.provider.SearchIndexableResource;
 import android.provider.SearchIndexablesContract.RawData;
@@ -97,28 +98,34 @@
 
     @Override
     public Cursor queryNonIndexableKeys(String[] projection) {
-        MatrixCursor cursor = new MatrixCursor(NON_INDEXABLES_KEYS_COLUMNS);
+        final long uidToken = Binder.clearCallingIdentity();
+        try {
+            MatrixCursor cursor = new MatrixCursor(NON_INDEXABLES_KEYS_COLUMNS);
 
-        if (!mUserManager.isAdminUser()) {
-            final String[] values = new String[]{"preferred_network_mode_key", "button_roaming_key",
-                    "cdma_lte_data_service_key", "enabled_networks_key", "enhanced_4g_lte",
-                    "button_apn_key", "button_carrier_sel_key", "carrier_settings_key",
-                    "cdma_system_select_key", "esim_list_profile", "mobile_data_enable",
-                    "data_usage_summary", "wifi_calling_key", "video_calling_key"};
-            for (String nik : values) {
-                cursor.addRow(createNonIndexableRow(nik));
+            if (!mUserManager.isAdminUser()) {
+                final String[] values = new String[]{"preferred_network_mode_key",
+                        "button_roaming_key",
+                        "cdma_lte_data_service_key", "enabled_networks_key", "enhanced_4g_lte",
+                        "button_apn_key", "button_carrier_sel_key", "carrier_settings_key",
+                        "cdma_system_select_key", "esim_list_profile", "mobile_data_enable",
+                        "data_usage_summary", "wifi_calling_key", "video_calling_key"};
+                for (String nik : values) {
+                    cursor.addRow(createNonIndexableRow(nik));
+                }
+            } else {
+                if (isEuiccSettingsHidden()) {
+                    cursor.addRow(createNonIndexableRow("esim_list_profile" /* key */));
+                }
+                if (isEnhanced4gLteHidden()) {
+                    cursor.addRow(createNonIndexableRow("enhanced_4g_lte" /* key */));
+                }
             }
-        } else {
-            if (isEuiccSettingsHidden()) {
-                cursor.addRow(createNonIndexableRow("esim_list_profile" /* key */));
-            }
-            if (isEnhanced4gLteHidden()) {
-                cursor.addRow(createNonIndexableRow("enhanced_4g_lte" /* key */));
-            }
+            cursor.addRow(createNonIndexableRow("carrier_settings_euicc_key" /* key */));
+            cursor.addRow(createNonIndexableRow("advanced_options" /* key */));
+            return cursor;
+        } finally {
+            Binder.restoreCallingIdentity(uidToken);
         }
-        cursor.addRow(createNonIndexableRow("carrier_settings_euicc_key" /* key */));
-        cursor.addRow(createNonIndexableRow("advanced_options" /* key */));
-        return cursor;
     }
 
     @VisibleForTesting boolean isEuiccSettingsHidden() {