summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xpackages/SettingsLib/res/values/config.xml5
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java39
2 files changed, 42 insertions, 2 deletions
diff --git a/packages/SettingsLib/res/values/config.xml b/packages/SettingsLib/res/values/config.xml
index 0cf4a411ec4e..e2e721c5ae6b 100755
--- a/packages/SettingsLib/res/values/config.xml
+++ b/packages/SettingsLib/res/values/config.xml
@@ -37,4 +37,7 @@
<!-- Intent key for package name values -->
<string name="config_helpIntentNameKey" translatable="false"></string>
-</resources>
+
+ <!-- The apps that need to be hided when they are disabled -->
+ <string-array name="config_hideWhenDisabled_packageNames"></string-array>
+</resources> \ No newline at end of file
diff --git a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
index a22a05125875..f0ec10786507 100644
--- a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
+++ b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
@@ -47,6 +47,7 @@ import android.util.Log;
import android.util.SparseArray;
import com.android.internal.util.ArrayUtils;
+import com.android.settingslib.R;
import java.io.File;
import java.text.Collator;
@@ -621,7 +622,7 @@ public class ApplicationsState {
}
if (filter != null) {
- filter.init();
+ filter.init(mContext);
}
List<AppEntry> apps;
@@ -1280,6 +1281,9 @@ public class ApplicationsState {
public interface AppFilter {
void init();
+ default void init(Context context) {
+ init();
+ }
boolean filterApp(AppEntry info);
}
@@ -1398,6 +1402,33 @@ public class ApplicationsState {
}
};
+ public static final AppFilter FILTER_NOT_HIDE = new AppFilter() {
+ private String[] mHidePackageNames;
+
+ public void init(Context context) {
+ mHidePackageNames = context.getResources()
+ .getStringArray(R.array.config_hideWhenDisabled_packageNames);
+ }
+
+ @Override
+ public void init() {
+ }
+
+ @Override
+ public boolean filterApp(AppEntry entry) {
+ if (ArrayUtils.contains(mHidePackageNames, entry.info.packageName)) {
+ if (!entry.info.enabled) {
+ return false;
+ } else if (entry.info.enabledSetting ==
+ PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+ };
+
public static class VolumeFilter implements AppFilter {
private final String mVolumeUuid;
@@ -1425,6 +1456,12 @@ public class ApplicationsState {
}
@Override
+ public void init(Context context) {
+ mFirstFilter.init(context);
+ mSecondFilter.init(context);
+ }
+
+ @Override
public void init() {
mFirstFilter.init();
mSecondFilter.init();