Show list of permissions instead of just numbers

Bug 21615746

Change-Id: I23439b3571f10d6d396174025a19b5ebb585dee9
This commit is contained in:
Makoto Onuki
2015-06-05 14:32:10 -07:00
parent 7e38eea817
commit 375c3a080e
4 changed files with 60 additions and 20 deletions

View File

@@ -34,6 +34,8 @@ import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
import android.content.pm.UserInfo;
import android.content.res.Resources;
import android.icu.text.ListFormatter;
import android.net.INetworkStatsService;
import android.net.INetworkStatsSession;
import android.net.NetworkTemplate;
@@ -78,6 +80,7 @@ import com.android.settings.notification.NotificationBackend.AppRow;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
@@ -493,7 +496,7 @@ public class InstalledAppDetails extends AppInfoBase
// Update the preference summaries.
Activity context = getActivity();
mStoragePreference.setSummary(AppStorageSettings.getSummary(mAppEntry, context));
PermissionsSummaryHelper.getPermissionCounts(getContext(), mPackageName,
PermissionsSummaryHelper.getPermissionSummary(getContext(), mPackageName,
mPermissionCallback);
mLaunchPreference.setSummary(Utils.getLaunchByDeafaultSummary(mAppEntry, mUsbManager,
mPm, context));
@@ -918,20 +921,40 @@ public class InstalledAppDetails extends AppInfoBase
}
};
private final PermissionsResultCallback mPermissionCallback = new PermissionsResultCallback() {
private final PermissionsResultCallback mPermissionCallback
= new PermissionsResultCallback() {
@Override
public void onPermissionCountResult(int[] result) {
if (getActivity() == null) {
return;
}
if (result != null) {
mPermissionsPreference.setSummary(getResources().getQuantityString(
R.plurals.runtime_permissions_summary, result[1], result[0], result[1]));
} else {
mPermissionsPreference.setSummary(null);
public void onPermissionSummaryResult(int[] counts, CharSequence[] groupLabels) {
final Resources res = getResources();
CharSequence summary = null;
boolean enabled = false;
if (counts != null) {
int totalCount = counts[1];
int additionalCounts = counts[2];
if (totalCount == 0) {
summary = res.getString(
R.string.runtime_permissions_summary_no_permissions_requested);
} else {
enabled = true;
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);
}
}
}
mPermissionsPreference.setSummary(summary);
mPermissionsPreference.setEnabled(enabled);
}
};
}