diff options
author | dh-harald <github@criminal.hu> | 2013-04-07 21:23:16 +0200 |
---|---|---|
committer | dh-harald <github@criminal.hu> | 2013-04-14 23:25:04 +0200 |
commit | 90f2ec1cad434ff6ab6b8e92c18ff5efbf9be6d8 (patch) | |
tree | 189fd201596168a696d19cc92efe5e1b40d36dce /src/com/android/settings/SettingsPreferenceFragment.java | |
parent | af3f79a1f89c07d5629929eee0ec5dcc3f52ebda (diff) | |
download | packages_apps_settings-90f2ec1cad434ff6ab6b8e92c18ff5efbf9be6d8.zip packages_apps_settings-90f2ec1cad434ff6ab6b8e92c18ff5efbf9be6d8.tar.gz packages_apps_settings-90f2ec1cad434ff6ab6b8e92c18ff5efbf9be6d8.tar.bz2 |
Fix: Don't display the lock clock preference if its not installed
Removed duplicated codes
Change-Id: Ib7d54dfc33c6a66711799bbdf44212d287221ae9
Diffstat (limited to 'src/com/android/settings/SettingsPreferenceFragment.java')
-rw-r--r-- | src/com/android/settings/SettingsPreferenceFragment.java | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java index b418826..b961bbc 100644 --- a/src/com/android/settings/SettingsPreferenceFragment.java +++ b/src/com/android/settings/SettingsPreferenceFragment.java @@ -23,11 +23,13 @@ import android.content.ContentResolver; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; +import android.content.pm.PackageManager.NameNotFoundException; import android.net.Uri; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceFragment; +import android.preference.PreferenceScreen; import android.text.TextUtils; import android.util.Log; import android.view.Menu; @@ -35,6 +37,9 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.widget.Button; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + /** * Base class for Settings fragments, with some helper functions and dialog management. */ @@ -307,4 +312,21 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di } } + public boolean removePreferenceIfPackageNotInstalled(Preference preference) { + String intentUri = ((PreferenceScreen) preference).getIntent().toUri(1); + Pattern pattern = Pattern.compile("component=([^/]+)/"); + Matcher matcher = pattern.matcher(intentUri); + + String packageName = matcher.find() ? matcher.group(1) : null; + if (packageName != null) { + try { + getPackageManager().getPackageInfo(packageName, 0); + } catch (NameNotFoundException e) { + Log.e(TAG, "package " + packageName + " not installed, hiding preference."); + getPreferenceScreen().removePreference(preference); + return true; + } + } + return false; + } } |