Merge "Cleanup of the PackageInstaller API - Settings" into nyc-dev
diff --git a/src/com/android/settings/applications/AdvancedAppSettings.java b/src/com/android/settings/applications/AdvancedAppSettings.java
index 6edbf60..ffa2236 100644
--- a/src/com/android/settings/applications/AdvancedAppSettings.java
+++ b/src/com/android/settings/applications/AdvancedAppSettings.java
@@ -123,66 +123,23 @@
private final PermissionsResultCallback mPermissionCallback = new PermissionsResultCallback() {
@Override
- public void onPermissionSummaryResult(int[] counts, CharSequence[] groupLabels) {
+ public void onAppWithPermissionsCountsResult(int standardGrantedPermissionAppCount,
+ int standardUsedPermissionAppCount) {
if (getActivity() == null) {
return;
}
mPermissionReceiver = null;
- if (counts != null) {
+ if (standardUsedPermissionAppCount != 0) {
mAppPermsPreference.setSummary(getContext().getString(
- R.string.app_permissions_summary, counts[0], counts[1]));
+ R.string.app_permissions_summary,
+ standardGrantedPermissionAppCount,
+ standardUsedPermissionAppCount));
} else {
mAppPermsPreference.setSummary(null);
}
}
};
- private class CountAppsWithOverlayPermission extends
- AsyncTask<AppStateOverlayBridge, Void, Integer> {
- int numOfPackagesRequestedPermission = 0;
-
- @Override
- protected Integer doInBackground(AppStateOverlayBridge... params) {
- AppStateOverlayBridge overlayBridge = params[0];
- numOfPackagesRequestedPermission = overlayBridge
- .getNumberOfPackagesWithPermission();
- return overlayBridge.getNumberOfPackagesCanDrawOverlay();
- }
-
- @Override
- protected void onPostExecute(Integer result) {
- // checks if fragment is still there before updating the preference object
- if (isAdded()) {
- mSystemAlertWindowPreference.setSummary(getContext().getString(
- R.string.system_alert_window_summary, result,
- numOfPackagesRequestedPermission));
- }
- }
- }
-
- private class CountAppsWithWriteSettingsPermission extends
- AsyncTask<AppStateWriteSettingsBridge, Void, Integer> {
- int numOfPackagesRequestedPermission = 0;
-
- @Override
- protected Integer doInBackground(AppStateWriteSettingsBridge... params) {
- AppStateWriteSettingsBridge writeSettingsBridge = params[0];
- numOfPackagesRequestedPermission = writeSettingsBridge
- .getNumberOfPackagesWithPermission();
- return writeSettingsBridge.getNumberOfPackagesCanWriteSettings();
- }
-
- @Override
- protected void onPostExecute(Integer result) {
- // checks if fragment is still there before updating the preference object
- if (isAdded()) {
- mWriteSettingsPreference.setSummary(getContext().getString(
- R.string.write_settings_summary, result,
- numOfPackagesRequestedPermission));
- }
- }
- }
-
public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider() {
@Override
diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java
index 14277c9..1ef304f 100755
--- a/src/com/android/settings/applications/InstalledAppDetails.java
+++ b/src/com/android/settings/applications/InstalledAppDetails.java
@@ -179,8 +179,6 @@
protected ProcStatsData mStatsManager;
protected ProcStatsPackageEntry mStats;
- private BroadcastReceiver mPermissionReceiver;
-
private boolean handleDisableable(Button button) {
boolean disableable = false;
// Try to prevent the user from bricking their phone
@@ -356,11 +354,6 @@
@Override
public void onDestroy() {
TrafficStats.closeQuietly(mStatsSession);
- if (mPermissionReceiver != null) {
- getContext().unregisterReceiver(mPermissionReceiver);
- mPermissionReceiver = null;
- }
-
super.onDestroy();
}
@@ -564,10 +557,8 @@
// Update the preference summaries.
Activity context = getActivity();
mStoragePreference.setSummary(AppStorageSettings.getSummary(mAppEntry, context));
- if (mPermissionReceiver != null) {
- getContext().unregisterReceiver(mPermissionReceiver);
- }
- mPermissionReceiver = PermissionsSummaryHelper.getPermissionSummary(getContext(),
+
+ PermissionsSummaryHelper.getPermissionSummary(getContext(),
mPackageName, mPermissionCallback);
mLaunchPreference.setSummary(AppUtils.getLaunchByDefaultSummary(mAppEntry, mUsbManager,
mPm, context));
@@ -1187,34 +1178,31 @@
private final PermissionsResultCallback mPermissionCallback
= new PermissionsResultCallback() {
@Override
- public void onPermissionSummaryResult(int[] counts, CharSequence[] groupLabels) {
+ public void onPermissionSummaryResult(int standardGrantedPermissionCount,
+ int requestedPermissionCount, int additionalGrantedPermissionCount,
+ List<CharSequence> grantedGroupLabels) {
if (getActivity() == null) {
return;
}
- mPermissionReceiver = null;
final Resources res = getResources();
CharSequence summary = null;
- if (counts != null) {
- int totalCount = counts[1];
- int additionalCounts = counts[2];
- if (totalCount == 0) {
+ if (requestedPermissionCount == 0) {
+ summary = res.getString(
+ R.string.runtime_permissions_summary_no_permissions_requested);
+ } else {
+ final ArrayList<CharSequence> list = new ArrayList<>(grantedGroupLabels);
+ if (additionalGrantedPermissionCount > 0) {
+ // N additional permissions.
+ list.add(res.getQuantityString(
+ R.plurals.runtime_permissions_additional_count,
+ additionalGrantedPermissionCount, additionalGrantedPermissionCount));
+ }
+ if (list.size() == 0) {
summary = res.getString(
- R.string.runtime_permissions_summary_no_permissions_requested);
+ R.string.runtime_permissions_summary_no_permissions_granted);
} else {
- final ArrayList<CharSequence> list = new ArrayList(Arrays.asList(groupLabels));
- if (additionalCounts > 0) {
- // N additional permissions.
- list.add(res.getQuantityString(
- R.plurals.runtime_permissions_additional_count,
- additionalCounts, additionalCounts));
- }
- if (list.size() == 0) {
- summary = res.getString(
- R.string.runtime_permissions_summary_no_permissions_granted);
- } else {
- summary = ListFormatter.getInstance().format(list);
- }
+ summary = ListFormatter.getInstance().format(list);
}
}
mPermissionsPreference.setSummary(summary);
diff --git a/src/com/android/settings/applications/PermissionsSummaryHelper.java b/src/com/android/settings/applications/PermissionsSummaryHelper.java
index 859e446..bac6b24 100644
--- a/src/com/android/settings/applications/PermissionsSummaryHelper.java
+++ b/src/com/android/settings/applications/PermissionsSummaryHelper.java
@@ -15,54 +15,66 @@
*/
package com.android.settings.applications;
-import android.content.BroadcastReceiver;
+import android.annotation.NonNull;
import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
+import android.content.pm.permission.RuntimePermissionPresentationInfo;
+import android.content.pm.permission.RuntimePermissionPresenter;
-public class PermissionsSummaryHelper {
+import java.text.Collator;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
- private static final String ACTION_PERM_COUNT_RESPONSE
- = "com.android.settings.PERM_COUNT_RESPONSE";
- private static final String ACTION_APP_COUNT_RESPONSE
- = "com.android.settings.APP_COUNT_RESPONSE";
+public class PermissionsSummaryHelper {
- public static BroadcastReceiver getPermissionSummary(Context context, String pkg,
- PermissionsResultCallback callback) {
- Intent request = new Intent(Intent.ACTION_GET_PERMISSIONS_COUNT);
- request.putExtra(Intent.EXTRA_PACKAGE_NAME, pkg);
- return sendPermissionRequest(context, ACTION_PERM_COUNT_RESPONSE, request, callback);
- }
-
- public static BroadcastReceiver getAppWithPermissionsCounts(Context context,
- PermissionsResultCallback callback) {
- Intent request = new Intent(Intent.ACTION_GET_PERMISSIONS_COUNT);
- return sendPermissionRequest(context, ACTION_APP_COUNT_RESPONSE, request, callback);
- }
-
- private static BroadcastReceiver sendPermissionRequest(Context context, String action,
- Intent request, final PermissionsResultCallback callback) {
- BroadcastReceiver receiver = new BroadcastReceiver() {
+ public static void getPermissionSummary(Context context, String pkg,
+ final PermissionsResultCallback callback) {
+ final RuntimePermissionPresenter presenter =
+ RuntimePermissionPresenter.getInstance(context);
+ presenter.getAppPermissions(pkg, new RuntimePermissionPresenter.OnResultCallback() {
@Override
- public void onReceive(Context context, Intent intent) {
- int[] counts = intent.getIntArrayExtra(Intent.EXTRA_GET_PERMISSIONS_COUNT_RESULT);
+ public void onGetAppPermissions(
+ @NonNull List<RuntimePermissionPresentationInfo> permissions) {
+ final int permissionCount = permissions.size();
- CharSequence[] groups = intent.getCharSequenceArrayExtra(
- Intent.EXTRA_GET_PERMISSIONS_GROUP_LIST_RESULT);
+ int grantedStandardCount = 0;
+ int grantedAdditionalCount = 0;
+ int requestedCount = 0;
+ List<CharSequence> grantedStandardLabels = new ArrayList<>();
- callback.onPermissionSummaryResult(counts, groups);
+ for (int i = 0; i < permissionCount; i++) {
+ RuntimePermissionPresentationInfo permission = permissions.get(i);
+ requestedCount++;
+ if (permission.isGranted()) {
+ if (permission.isStandard()) {
+ grantedStandardLabels.add(permission.getLabel());
+ grantedStandardCount++;
+ } else {
+ grantedAdditionalCount++;
+ }
+ }
+ }
- context.unregisterReceiver(this);
+ Collator collator = Collator.getInstance();
+ collator.setStrength(Collator.PRIMARY);
+ Collections.sort(grantedStandardLabels, collator);
+
+ callback.onPermissionSummaryResult(grantedStandardCount, requestedCount,
+ grantedAdditionalCount, grantedStandardLabels);
}
- };
- context.registerReceiver(receiver, new IntentFilter(action));
- request.putExtra(Intent.EXTRA_GET_PERMISSIONS_RESPONSE_INTENT, action);
- request.setFlags(Intent.FLAG_RECEIVER_FOREGROUND);
- context.sendBroadcast(request);
- return receiver;
+ }, null);
}
- public interface PermissionsResultCallback {
- void onPermissionSummaryResult(int[] counts, CharSequence[] groupLabels);
+ public static abstract class PermissionsResultCallback {
+ public void onAppWithPermissionsCountsResult(int standardGrantedPermissionAppCount,
+ int standardUsedPermissionAppCount) {
+ /* do nothing - stub */
+ }
+
+ public void onPermissionSummaryResult(int standardGrantedPermissionCount,
+ int requestedPermissionCount, int additionalGrantedPermissionCount,
+ List<CharSequence> grantedGroupLabels) {
+ /* do nothing - stub */
+ }
}
}