From bef722cfad21210fd41f321a004552d248d94755 Mon Sep 17 00:00:00 2001 From: Adrian Roos Date: Tue, 14 Apr 2015 17:48:58 -0700 Subject: [PATCH] Hide emergency app setting when not available Bug: 20117344 Change-Id: Ieb6d166c0fa7c7376bbf262fa831ff3f626fce57 --- .../DefaultEmergencyPreference.java | 21 +++++++++++++------ .../applications/ManageDefaultApps.java | 6 ++++++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/com/android/settings/applications/DefaultEmergencyPreference.java b/src/com/android/settings/applications/DefaultEmergencyPreference.java index 3fc702bab66..2bda0ed4ef8 100644 --- a/src/com/android/settings/applications/DefaultEmergencyPreference.java +++ b/src/com/android/settings/applications/DefaultEmergencyPreference.java @@ -43,6 +43,9 @@ public class DefaultEmergencyPreference extends AppListPreference { private final ContentResolver mContentResolver; + public static final Intent QUERY_INTENT = new Intent( + TelephonyManager.ACTION_EMERGENCY_ASSISTANCE); + public DefaultEmergencyPreference(Context context, AttributeSet attrs) { super(context, attrs); mContentResolver = context.getContentResolver(); @@ -85,18 +88,19 @@ public class DefaultEmergencyPreference extends AppListPreference { private Set resolveAssistPackageAndQueryApps() { Set packages = new ArraySet<>(); - Intent queryIntent = new Intent(TelephonyManager.ACTION_EMERGENCY_ASSISTANCE); PackageManager packageManager = getContext().getPackageManager(); - List infos = packageManager.queryIntentActivities(queryIntent, 0); + List infos = packageManager.queryIntentActivities(QUERY_INTENT, 0); PackageInfo bestMatch = null; - for (int i = 0; i < infos.size(); i++) { - if (infos.get(i) == null || infos.get(i).activityInfo == null - || packages.contains(infos.get(i).activityInfo.packageName)) { + final int size = infos.size(); + for (int i = 0; i < size; i++) { + ResolveInfo info = infos.get(i); + if (info == null || info.activityInfo == null + || packages.contains(info.activityInfo.packageName)) { continue; } - String packageName = infos.get(i).activityInfo.packageName; + String packageName = info.activityInfo.packageName; packages.add(packageName); @@ -130,6 +134,11 @@ public class DefaultEmergencyPreference extends AppListPreference { } public static boolean isAvailable(Context context) { + return isCapable(context) + && context.getPackageManager().resolveActivity(QUERY_INTENT, 0) != null; + } + + public static boolean isCapable(Context context) { return context.getResources().getBoolean( com.android.internal.R.bool.config_voice_capable); } diff --git a/src/com/android/settings/applications/ManageDefaultApps.java b/src/com/android/settings/applications/ManageDefaultApps.java index e2f8c6b3454..326de229728 100644 --- a/src/com/android/settings/applications/ManageDefaultApps.java +++ b/src/com/android/settings/applications/ManageDefaultApps.java @@ -34,6 +34,7 @@ import com.android.settings.InstrumentedFragment; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.search.BaseSearchIndexProvider; +import com.android.settings.search.Index; import com.android.settings.search.Indexable; import java.util.ArrayList; @@ -86,6 +87,11 @@ public class ManageDefaultApps extends SettingsPreferenceFragment if (!DefaultEmergencyPreference.isAvailable(getActivity())) { removePreference(KEY_DEFAULT_EMERGENCY_APP); } + + if (DefaultEmergencyPreference.isCapable(getActivity())) { + Index.getInstance(getActivity()).updateFromClassNameResource( + ManageDefaultApps.class.getName(), true, true); + } } @Override