summaryrefslogtreecommitdiffstats
path: root/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java
diff options
context:
space:
mode:
authorMakoto Onuki <omakoto@google.com>2015-06-05 16:28:24 -0700
committerMakoto Onuki <omakoto@google.com>2015-06-08 17:48:58 -0700
commitbf3e576881748a1420fabc9c7ecc55cbadcc8136 (patch)
tree19203379f897e5141f48496c815b8fdb55721fb9 /src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java
parent1d7374da0193556be463789e06b552196ddb7c21 (diff)
downloadandroid_packages_apps_PackageInstaller-bf3e576881748a1420fabc9c7ecc55cbadcc8136.tar.gz
android_packages_apps_PackageInstaller-bf3e576881748a1420fabc9c7ecc55cbadcc8136.tar.bz2
android_packages_apps_PackageInstaller-bf3e576881748a1420fabc9c7ecc55cbadcc8136.zip
ACTION_GET_PERMISSIONS_COUNT now returns list of granted...
permissions too. to Settings. Change-Id: Ib864d8ceb2c0f4eb18dc86775e7c9679161e7a88
Diffstat (limited to 'src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java')
-rw-r--r--src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java50
1 files changed, 42 insertions, 8 deletions
diff --git a/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java b/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java
index 9e2bfd13..b89cfc0f 100644
--- a/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java
+++ b/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java
@@ -26,27 +26,44 @@ import android.util.SparseArray;
import com.android.packageinstaller.permission.model.PermissionApps.PermissionApp;
import com.android.packageinstaller.permission.utils.Utils;
-public class PermissionStatusReceiver extends BroadcastReceiver {
+import java.text.Collator;
+import java.util.ArrayList;
+import java.util.Collections;
+public class PermissionStatusReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
- int[] result = new int[2];
+ int[] counts = new int[3];
+ ArrayList<CharSequence> grantedGroups = new ArrayList<>();
boolean succeeded = false;
+
+ boolean isForPackage = intent.hasExtra(Intent.EXTRA_PACKAGE_NAME);
+
Intent responseIntent = new Intent(intent.getStringExtra(
Intent.EXTRA_GET_PERMISSIONS_RESPONSE_INTENT));
responseIntent.setFlags(Intent.FLAG_RECEIVER_FOREGROUND);
- if (intent.hasExtra(Intent.EXTRA_PACKAGE_NAME)) {
+
+
+ if (isForPackage) {
String pkg = intent.getStringExtra(Intent.EXTRA_PACKAGE_NAME);
- succeeded = getPermissionsCount(context, pkg, result);
+ succeeded = getPermissionsCount(context, pkg, counts, grantedGroups);
} else {
- succeeded = getAppsWithPermissionsCount(context, result);
+ succeeded = getAppsWithPermissionsCount(context, counts);
}
- responseIntent.putExtra(Intent.EXTRA_GET_PERMISSIONS_COUNT_RESULT,
- succeeded ? result : null);
+ if (succeeded) {
+ responseIntent.putExtra(Intent.EXTRA_GET_PERMISSIONS_COUNT_RESULT, counts);
+
+ if (isForPackage) {
+ responseIntent.putExtra(Intent.EXTRA_GET_PERMISSIONS_GROUP_LIST_RESULT,
+ grantedGroups.toArray(new CharSequence[grantedGroups.size()]));
+ }
+ }
+
context.sendBroadcast(responseIntent);
}
- public boolean getPermissionsCount(Context context, String pkg, int[] counts) {
+ public boolean getPermissionsCount(Context context, String pkg, int[] counts,
+ ArrayList<CharSequence> grantedGroups) {
try {
PackageInfo packageInfo =
context.getPackageManager().getPackageInfo(pkg, PackageManager.GET_PERMISSIONS);
@@ -54,16 +71,33 @@ public class PermissionStatusReceiver extends BroadcastReceiver {
new AppPermissions(context, packageInfo, null, null);
int grantedCount = 0;
int totalCount = 0;
+ int additionalCount = 0;
+
for (AppPermissionGroup group : appPermissions.getPermissionGroups()) {
if (Utils.shouldShowPermission(group, false)) {
totalCount++;
if (group.areRuntimePermissionsGranted()) {
grantedCount++;
+
+ if (Utils.OS_PKG.equals(group.getDeclaringPackage())) {
+ grantedGroups.add(group.getLabel());
+ } else {
+ additionalCount++;
+ }
}
}
}
+
+ // Sort
+ Collator coll = Collator.getInstance();
+ coll.setStrength(Collator.PRIMARY);
+ Collections.sort(grantedGroups, coll);
+
+ // Set results
counts[0] = grantedCount;
counts[1] = totalCount;
+ counts[2] = additionalCount;
+
return true;
} catch (NameNotFoundException e) {
return false;