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
This commit is contained in:
jackqdyulei
2016-09-29 13:31:54 -07:00
parent e422b0b29f
commit 4bf191ca75
2 changed files with 42 additions and 2 deletions

View File

@@ -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>

View File

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