From 4bf191ca757c23e1417ae9dc29ac091c4fa0e96e Mon Sep 17 00:00:00 2001 From: jackqdyulei Date: Thu, 29 Sep 2016 13:31:54 -0700 Subject: [PATCH] Add "FILTER_NOT_HIDE" to filter out the apps. The "FILTER_NOT_HIDE" is used to filter out apps that "blacklisted" by the carrier. So when user insert a specific sim card, these apps disapper in settings > apps totally unless user enable them. Bug: 31823872 Test: Manual Change-Id: I62ec13806d70f68e6cd3cbd014e7513cda36358c --- packages/SettingsLib/res/values/config.xml | 5 ++- .../applications/ApplicationsState.java | 39 ++++++++++++++++++- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/packages/SettingsLib/res/values/config.xml b/packages/SettingsLib/res/values/config.xml index 0cf4a411ec4e0..e2e721c5ae6bd 100755 --- a/packages/SettingsLib/res/values/config.xml +++ b/packages/SettingsLib/res/values/config.xml @@ -37,4 +37,7 @@ - + + + + \ 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 a22a051258750..f0ec107865075 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 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; @@ -1424,6 +1455,12 @@ public class ApplicationsState { mSecondFilter = second; } + @Override + public void init(Context context) { + mFirstFilter.init(context); + mSecondFilter.init(context); + } + @Override public void init() { mFirstFilter.init();