summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/SettingsPreferenceFragment.java
diff options
context:
space:
mode:
authordh-harald <github@criminal.hu>2013-04-07 21:23:16 +0200
committerdh-harald <github@criminal.hu>2013-04-14 23:25:04 +0200
commit90f2ec1cad434ff6ab6b8e92c18ff5efbf9be6d8 (patch)
tree189fd201596168a696d19cc92efe5e1b40d36dce /src/com/android/settings/SettingsPreferenceFragment.java
parentaf3f79a1f89c07d5629929eee0ec5dcc3f52ebda (diff)
downloadpackages_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.java22
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;
+ }
}