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();