Rearrange configure/default apps
Bug: 27276982
Bug: 27279305
Change-Id: I443e9d2bc0c3fd9bcc13ee86716c14fbb55af0ba
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index e871c82..6144f72 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -25,6 +25,7 @@
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.os.Bundle;
+import android.support.annotation.XmlRes;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceGroup;
import android.support.v7.preference.PreferenceGroupAdapter;
@@ -132,6 +133,25 @@
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
}
+ @Override
+ public void addPreferencesFromResource(@XmlRes int preferencesResId) {
+ super.addPreferencesFromResource(preferencesResId);
+ checkAvailablePrefs(getPreferenceScreen());
+ }
+
+ private void checkAvailablePrefs(PreferenceGroup preferenceGroup) {
+ if (preferenceGroup == null) return;
+ for (int i = 0; i < preferenceGroup.getPreferenceCount(); i++) {
+ Preference pref = preferenceGroup.getPreference(i);
+ if (pref instanceof SelfAvailablePreference
+ && !((SelfAvailablePreference) pref).isAvailable(getContext())) {
+ preferenceGroup.removePreference(pref);
+ } else if (pref instanceof PreferenceGroup) {
+ checkAvailablePrefs((PreferenceGroup) pref);
+ }
+ }
+ }
+
public FloatingActionButton getFloatingActionButton() {
return mFloatingActionButton;
}