diff --git a/src/com/android/settings/applications/AdvancedAppSettings.java b/src/com/android/settings/applications/AdvancedAppSettings.java index d5ab8dc01f2..a0e5e8e223c 100644 --- a/src/com/android/settings/applications/AdvancedAppSettings.java +++ b/src/com/android/settings/applications/AdvancedAppSettings.java @@ -38,6 +38,7 @@ import android.os.UserHandle; 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.AppEntry; 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 @@ public class AdvancedAppSettings extends SettingsPreferenceFragment implements C 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 @@ public class AdvancedAppSettings extends SettingsPreferenceFragment implements C 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 @@ public class AdvancedAppSettings extends SettingsPreferenceFragment implements C mPermissionsInfo.getRuntimePermAppsCount())); } + public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = + new BaseSearchIndexProvider() { + @Override + public List getXmlResourcesToIndex(Context context, + boolean enabled) { + ArrayList result = new ArrayList<>(1); + SearchIndexableResource sir = new SearchIndexableResource(context); + sir.xmlResId = R.xml.advanced_apps; + result.add(sir); + return result; + } + + @Override + public List getNonIndexableKeys(Context context) { + ArrayList 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 1470f64f67b..97418fcaa87 100644 --- a/src/com/android/settings/applications/DefaultEmergencyPreference.java +++ b/src/com/android/settings/applications/DefaultEmergencyPreference.java @@ -46,7 +46,10 @@ public class DefaultEmergencyPreference extends ListPreference { public DefaultEmergencyPreference(Context context, AttributeSet attrs) { super(context, attrs); mContentResolver = context.getContentResolver(); - load(); + + if (isAvailable(context)) { + load(); + } } @Override @@ -149,6 +152,11 @@ public class DefaultEmergencyPreference extends ListPreference { 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 102e0bf2a69..4b6a1e5b638 100644 --- a/src/com/android/settings/search/SearchIndexableResources.java +++ b/src/com/android/settings/search/SearchIndexableResources.java @@ -193,7 +193,7 @@ public final class SearchIndexableResources { 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));