Hide emergency app settings on non-voice deivces
Bug: 19841649
Change-Id: I30ba582f503514656c99f3aea2801a68dfd1a5fa
diff --git a/src/com/android/settings/applications/AdvancedAppSettings.java b/src/com/android/settings/applications/AdvancedAppSettings.java
index d5ab8dc..a0e5e8e 100644
--- a/src/com/android/settings/applications/AdvancedAppSettings.java
+++ b/src/com/android/settings/applications/AdvancedAppSettings.java
@@ -38,6 +38,7 @@
import android.os.UserManager;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
+import android.provider.SearchIndexableResource;
import android.util.Log;
import android.util.Pair;
import android.view.LayoutInflater;
@@ -51,12 +52,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);
@@ -64,6 +67,7 @@
private static final String KEY_APP_PERM = "manage_perms";
private static final String KEY_ALL_APPS = "all_apps";
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;
@@ -110,6 +114,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 updateAllAppsSummary() {
@@ -281,4 +289,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 102e0bf..4b6a1e5 100644
--- a/src/com/android/settings/search/SearchIndexableResources.java
+++ b/src/com/android/settings/search/SearchIndexableResources.java
@@ -193,7 +193,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));