Merge "Hide emergency app settings on non-voice deivces"
diff --git a/src/com/android/settings/applications/AdvancedAppSettings.java b/src/com/android/settings/applications/AdvancedAppSettings.java
index 3d3c9f6..2c6efa6 100644
--- a/src/com/android/settings/applications/AdvancedAppSettings.java
+++ b/src/com/android/settings/applications/AdvancedAppSettings.java
@@ -37,6 +37,7 @@
 import android.os.UserHandle;
 import android.preference.Preference;
 import android.preference.Preference.OnPreferenceClickListener;
+import android.provider.SearchIndexableResource;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -49,12 +50,14 @@
 import com.android.settings.applications.ApplicationsState.Callbacks;
 import com.android.settings.applications.ApplicationsState.Session;
 import com.android.settings.applications.PermissionsInfo.Callback;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.Indexable;
 
 import java.util.ArrayList;
 import java.util.List;
 
 public class AdvancedAppSettings extends SettingsPreferenceFragment implements Callbacks,
-        DialogInterface.OnClickListener, DialogInterface.OnDismissListener, Callback {
+        DialogInterface.OnClickListener, DialogInterface.OnDismissListener, Callback, Indexable {
 
     static final String TAG = "AdvancedAppSettings";
     static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
@@ -63,6 +66,7 @@
     private static final String KEY_ALL_APPS = "all_apps";
     private static final String KEY_APP_DOMAIN_URLS = "domain_urls";
     private static final String KEY_RESET_ALL = "reset_all";
+    private static final String KEY_DEFAULT_EMERGENCY_APP = "default_emergency_app";
     private static final String EXTRA_RESET_DIALOG = "resetDialog";
 
     private ApplicationsState mApplicationsState;
@@ -111,6 +115,10 @@
         mNpm = NetworkPolicyManager.from(getActivity());
         mAom = (AppOpsManager)getActivity().getSystemService(Context.APP_OPS_SERVICE);
         mHandler = new Handler(getActivity().getMainLooper());
+
+        if (!DefaultEmergencyPreference.isAvailable(getActivity())) {
+            removePreference(KEY_DEFAULT_EMERGENCY_APP);
+        }
     }
 
     private void updateUI() {
@@ -295,4 +303,25 @@
                 mPermissionsInfo.getRuntimePermAppsCount()));
     }
 
+    public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new BaseSearchIndexProvider() {
+        @Override
+        public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
+                boolean enabled) {
+            ArrayList<SearchIndexableResource> result = new ArrayList<>(1);
+            SearchIndexableResource sir = new SearchIndexableResource(context);
+            sir.xmlResId = R.xml.advanced_apps;
+            result.add(sir);
+            return result;
+        }
+
+        @Override
+        public List<String> getNonIndexableKeys(Context context) {
+            ArrayList<String> result = new ArrayList<>(1);
+            if (!DefaultEmergencyPreference.isAvailable(context)) {
+                result.add(KEY_DEFAULT_EMERGENCY_APP);
+            }
+            return result;
+        }
+    };
 }
diff --git a/src/com/android/settings/applications/DefaultEmergencyPreference.java b/src/com/android/settings/applications/DefaultEmergencyPreference.java
index 1470f64..97418fc 100644
--- a/src/com/android/settings/applications/DefaultEmergencyPreference.java
+++ b/src/com/android/settings/applications/DefaultEmergencyPreference.java
@@ -46,7 +46,10 @@
     public DefaultEmergencyPreference(Context context, AttributeSet attrs) {
         super(context, attrs);
         mContentResolver = context.getContentResolver();
-        load();
+
+        if (isAvailable(context)) {
+            load();
+        }
     }
 
     @Override
@@ -149,6 +152,11 @@
         return packages;
     }
 
+    public static boolean isAvailable(Context context) {
+        return context.getResources().getBoolean(
+                com.android.internal.R.bool.config_voice_capable);
+    }
+
     private static boolean isSystemApp(PackageInfo info) {
         return info.applicationInfo != null
                 && (info.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
diff --git a/src/com/android/settings/search/SearchIndexableResources.java b/src/com/android/settings/search/SearchIndexableResources.java
index 75d7d62..0ad9503 100644
--- a/src/com/android/settings/search/SearchIndexableResources.java
+++ b/src/com/android/settings/search/SearchIndexableResources.java
@@ -209,7 +209,7 @@
         sResMap.put(AdvancedAppSettings.class.getName(),
                 new SearchIndexableResource(
                         Ranking.getRankForClassName(AdvancedAppSettings.class.getName()),
-                        R.xml.advanced_apps,
+                        NO_DATA_RES_ID,
                         AdvancedAppSettings.class.getName(),
                         R.drawable.ic_settings_applications));