summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/DeviceInfoSettings.java
diff options
context:
space:
mode:
authorDvTonder <david.vantonder@gmail.com>2012-11-25 07:44:13 -0500
committerAdnan Begovic <adnan@cyngn.com>2015-11-23 15:29:42 -0800
commit7e1c23414e3c839ce30e0f855a98d8f0d94f39c5 (patch)
tree1d121968b57bf83f3140434c445c27973562dad4 /src/com/android/settings/DeviceInfoSettings.java
parent5afad60db65b9567861a844182a33b3668103312 (diff)
downloadpackages_apps_Settings-7e1c23414e3c839ce30e0f855a98d8f0d94f39c5.zip
packages_apps_Settings-7e1c23414e3c839ce30e0f855a98d8f0d94f39c5.tar.gz
packages_apps_Settings-7e1c23414e3c839ce30e0f855a98d8f0d94f39c5.tar.bz2
Settings: Add CM Updater
Squashed commit of the following: Author: DvTonder <david.vantonder@gmail.com> Settings: Add Updater and Changelog Change-Id: I8cf09962d9ba667bcdba78d7214fd6b5bb0feedc Author: Jorge Ruesga <jorge@ruesga.com> settings: hide settings of disabled components Change-Id: I977bd0c9668b479773802f99d03ecd1072e12f75 JIRA: CYAN-3552 Issue: https://jira.cyanogenmod.org/browse/CYAN-3552 Signed-off-by: Jorge Ruesga <jorge@ruesga.com> Author: Michael Bestas <mikeioannina@gmail.com> Move CM updater & remove summary * Move CM Updater to the top, like the fota app * Use android's default 'System updates' empty summary Change-Id: Ia3358397be97bc0ac19dd73598d053eb29efe31d Change-Id: I8cf09962d9ba667bcdba78d7214fd6b5bb0feedc
Diffstat (limited to 'src/com/android/settings/DeviceInfoSettings.java')
-rw-r--r--src/com/android/settings/DeviceInfoSettings.java33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java
index 3dc6446..5921fef 100644
--- a/src/com/android/settings/DeviceInfoSettings.java
+++ b/src/com/android/settings/DeviceInfoSettings.java
@@ -20,7 +20,9 @@ import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
import android.os.Build;
import android.os.Bundle;
@@ -85,6 +87,7 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In
private static final String KEY_MOD_VERSION = "mod_version";
private static final String KEY_MOD_BUILD_DATE = "build_date";
private static final String KEY_MOD_API_LEVEL = "mod_api_level";
+ private static final String KEY_CM_UPDATES = "cm_updates";
static final int TAPS_TO_BE_A_DEVELOPER = 7;
@@ -150,6 +153,13 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In
removePreferenceIfPropertyMissing(getPreferenceScreen(), KEY_SELINUX_STATUS,
PROPERTY_SELINUX_STATUS);
+ // Only the owner should see the Updater settings, if it exists
+ if (UserHandle.myUserId() == UserHandle.USER_OWNER) {
+ removePreferenceIfPackageNotInstalled(findPreference(KEY_CM_UPDATES));
+ } else {
+ getPreferenceScreen().removePreference(findPreference(KEY_CM_UPDATES));
+ }
+
// Remove Safety information preference if PROPERTY_URL_SAFETYLEGAL is not set
removePreferenceIfPropertyMissing(getPreferenceScreen(), KEY_SAFETY_LEGAL,
PROPERTY_URL_SAFETYLEGAL);
@@ -541,5 +551,28 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In
}
};
+ private 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 {
+ PackageInfo pi = getPackageManager().getPackageInfo(packageName,
+ PackageManager.GET_ACTIVITIES);
+ if (!pi.applicationInfo.enabled) {
+ Log.e(LOG_TAG,"package "+packageName+" is disabled, hiding preference.");
+ getPreferenceScreen().removePreference(preference);
+ return true;
+ }
+ } catch (NameNotFoundException e) {
+ Log.e(LOG_TAG,"package "+packageName+" not installed, hiding preference.");
+ getPreferenceScreen().removePreference(preference);
+ return true;
+ }
+ }
+ return false;
+ }
}