summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAnthony Hugh <ahugh@google.com>2015-10-30 20:04:10 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-10-30 20:04:10 +0000
commitae6139679d31e52f74aa9d6ceb40f952f14f6022 (patch)
tree33ef06456270c00f5363b2f6c990be82fe1ca0d3 /src
parente18bfc22019f44ae60674fc6d34616ce097e05f4 (diff)
parente4cd4f8bb6035fd5463c5a44c267b0dd196c17fe (diff)
downloadandroid_packages_apps_PackageInstaller-ae6139679d31e52f74aa9d6ceb40f952f14f6022.tar.gz
android_packages_apps_PackageInstaller-ae6139679d31e52f74aa9d6ceb40f952f14f6022.tar.bz2
android_packages_apps_PackageInstaller-ae6139679d31e52f74aa9d6ceb40f952f14f6022.zip
Merge "Add mechanism for determining if apps are system apps" into cw-e-dev
Diffstat (limited to 'src')
-rw-r--r--src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java19
-rw-r--r--src/com/android/packageinstaller/permission/utils/Utils.java10
2 files changed, 26 insertions, 3 deletions
diff --git a/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java b/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java
index 3604cd71..810ae8ec 100644
--- a/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java
+++ b/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java
@@ -69,11 +69,14 @@ public class PermissionStatusReceiver extends BroadcastReceiver {
List<String> appsList = new ArrayList<>();
List<CharSequence> appLabelsList = new ArrayList<>();
- if (getAppsWithRuntimePermissions(context, appsList, appLabelsList)) {
+ List<Boolean> isSystemAppList = new ArrayList<>();
+ if (getAppsWithRuntimePermissions(context, appsList, appLabelsList, isSystemAppList)) {
responseIntent.putExtra(Intent.EXTRA_GET_PERMISSIONS_APP_LIST_RESULT,
appsList.toArray(new String[appsList.size()]));
responseIntent.putExtra(Intent.EXTRA_GET_PERMISSIONS_APP_LABEL_LIST_RESULT,
appLabelsList.toArray(new String[appLabelsList.size()]));
+ responseIntent.putExtra(Intent.EXTRA_GET_PERMISSIONS_IS_SYSTEM_APP_LIST_RESULT,
+ toPrimitiveBoolArray(isSystemAppList));
}
context.sendBroadcast(responseIntent);
}
@@ -122,13 +125,14 @@ public class PermissionStatusReceiver extends BroadcastReceiver {
}
public boolean getAppsWithRuntimePermissions(Context context, List<String> appsList,
- List<CharSequence> appLabelsList) {
+ List<CharSequence> appLabelsList, List<Boolean> isSystemAppList) {
final List<ApplicationInfo> appInfos = Utils.getAllInstalledApplications(context);
if (appInfos == null) {
return false;
}
final int appInfosSize = appInfos.size();
try {
+ ArraySet<String> launcherPackages = Utils.getLauncherPackages(context);
for (int i = 0; i < appInfosSize; ++i) {
final String packageName = appInfos.get(i).packageName;
PackageInfo packageInfo = context.getPackageManager().getPackageInfo(
@@ -146,6 +150,7 @@ public class PermissionStatusReceiver extends BroadcastReceiver {
if (shouldShow) {
appsList.add(packageName);
appLabelsList.add(appPermissions.getAppLabel());
+ isSystemAppList.add(Utils.isSystem(appPermissions, launcherPackages));
}
}
} catch (NameNotFoundException e) {
@@ -180,4 +185,14 @@ public class PermissionStatusReceiver extends BroadcastReceiver {
counts[1] = allApps.size();
return true;
}
+
+ private boolean[] toPrimitiveBoolArray(final List<Boolean> list) {
+ final int count = list.size();
+ final boolean[] result = new boolean[count];
+ for (int i = 0; i < count; ++i) {
+ result[i] = list.get(i);
+ }
+
+ return result;
+ }
}
diff --git a/src/com/android/packageinstaller/permission/utils/Utils.java b/src/com/android/packageinstaller/permission/utils/Utils.java
index 2cc5d8aa..21830378 100644
--- a/src/com/android/packageinstaller/permission/utils/Utils.java
+++ b/src/com/android/packageinstaller/permission/utils/Utils.java
@@ -31,6 +31,7 @@ import android.util.Log;
import android.util.TypedValue;
import com.android.packageinstaller.permission.model.AppPermissionGroup;
+import com.android.packageinstaller.permission.model.AppPermissions;
import com.android.packageinstaller.permission.model.PermissionApps.PermissionApp;
import java.util.List;
@@ -134,7 +135,14 @@ public class Utils {
}
public static boolean isSystem(PermissionApp app, ArraySet<String> launcherPkgs) {
- ApplicationInfo info = app.getAppInfo();
+ return isSystem(app.getAppInfo(), launcherPkgs);
+ }
+
+ public static boolean isSystem(AppPermissions app, ArraySet<String> launcherPkgs) {
+ return isSystem(app.getPackageInfo().applicationInfo, launcherPkgs);
+ }
+
+ public static boolean isSystem(ApplicationInfo info, ArraySet<String> launcherPkgs) {
return info.isSystemApp() && (info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 0
&& !launcherPkgs.contains(info.packageName);
}