Update the restrict app list

Before this cl, we use getPackagesForOps() to populate restrict app
list. However in that API not all the apps are currently restricted,
so in this cl we filter out all the allowed apps.

Bug: 73085780
Test: RunSettingsRoboTest
Change-Id: Ia7c1eb95b07a1a0d203b394eb64dcd98d25bd561
This commit is contained in:
Lei Yu
2018-03-12 14:42:54 -07:00
parent f11976d817
commit cb77823b65
2 changed files with 47 additions and 13 deletions

View File

@@ -67,17 +67,26 @@ public class RestrictAppPreferenceController extends BasePreferenceController {
final List<AppOpsManager.PackageOps> packageOpsList = mAppOpsManager.getPackagesForOps(
new int[]{AppOpsManager.OP_RUN_ANY_IN_BACKGROUND});
final int num = CollectionUtils.size(packageOpsList);
mAppInfos = new ArrayList<>();
for (int i = 0; i < num; i++) {
for (int i = 0, size = CollectionUtils.size(packageOpsList); i < size; i++) {
final AppOpsManager.PackageOps packageOps = packageOpsList.get(i);
mAppInfos.add(new AppInfo.Builder()
.setPackageName(packageOps.getPackageName())
.setUid(packageOps.getUid())
.build());
final List<AppOpsManager.OpEntry> entries = packageOps.getOps();
for (int j = 0; j < entries.size(); j++) {
AppOpsManager.OpEntry ent = entries.get(j);
if (ent.getOp() != AppOpsManager.OP_RUN_ANY_IN_BACKGROUND) {
continue;
}
if (ent.getMode() != AppOpsManager.MODE_ALLOWED) {
mAppInfos.add(new AppInfo.Builder()
.setPackageName(packageOps.getPackageName())
.setUid(packageOps.getUid())
.build());
}
}
}
final int num = mAppInfos.size();
// Enable the preference if some apps already been restricted, otherwise disable it
preference.setEnabled(num > 0);
preference.setSummary(