Show list of permissions instead of just numbers
Bug 21615746 Change-Id: I23439b3571f10d6d396174025a19b5ebb585dee9
This commit is contained in:
@@ -6475,6 +6475,18 @@
|
|||||||
<item quantity="other"><xliff:g id="count" example="10">%d</xliff:g> of <xliff:g id="count" example="10">%d</xliff:g> permissions granted</item>
|
<item quantity="other"><xliff:g id="count" example="10">%d</xliff:g> of <xliff:g id="count" example="10">%d</xliff:g> permissions granted</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
|
||||||
|
<!-- Runtime permissions preference summary. Number of additional permissions granted. [CHAR LIMIT=40] -->
|
||||||
|
<plurals name="runtime_permissions_additional_count">
|
||||||
|
<item quantity="one"><xliff:g id="count" example="1">%d</xliff:g> additional permission</item>
|
||||||
|
<item quantity="other"><xliff:g id="count" example="10">%d</xliff:g> additional permissions</item>
|
||||||
|
</plurals>
|
||||||
|
|
||||||
|
<!-- Runtime permissions preference summary, shown when the app has no permissions granted. [CHAR LIMIT=40] -->
|
||||||
|
<string name="runtime_permissions_summary_no_permissions_granted">No permissions granted</string>
|
||||||
|
|
||||||
|
<!-- Runtime permissions preference summary, shown when the app requests no permissions. [CHAR LIMIT=40] -->
|
||||||
|
<string name="runtime_permissions_summary_no_permissions_requested">No permissions requested</string>
|
||||||
|
|
||||||
<!-- Launch defaults preference summary with some set [CHAR LIMIT=40] -->
|
<!-- Launch defaults preference summary with some set [CHAR LIMIT=40] -->
|
||||||
<string name="launch_defaults_some">Some defaults set</string>
|
<string name="launch_defaults_some">Some defaults set</string>
|
||||||
<!-- Launch defaults preference summary with none set [CHAR LIMIT=40] -->
|
<!-- Launch defaults preference summary with none set [CHAR LIMIT=40] -->
|
||||||
|
@@ -128,13 +128,13 @@ public class AdvancedAppSettings extends SettingsPreferenceFragment implements
|
|||||||
|
|
||||||
private final PermissionsResultCallback mPermissionCallback = new PermissionsResultCallback() {
|
private final PermissionsResultCallback mPermissionCallback = new PermissionsResultCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onPermissionCountResult(int[] result) {
|
public void onPermissionSummaryResult(int[] counts, CharSequence[] groupLabels) {
|
||||||
if (getActivity() == null) {
|
if (getActivity() == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (result != null) {
|
if (counts != null) {
|
||||||
mAppPermsPreference.setSummary(getContext().getString(
|
mAppPermsPreference.setSummary(getContext().getString(
|
||||||
R.string.app_permissions_summary, result[0], result[1]));
|
R.string.app_permissions_summary, counts[0], counts[1]));
|
||||||
} else {
|
} else {
|
||||||
mAppPermsPreference.setSummary(null);
|
mAppPermsPreference.setSummary(null);
|
||||||
}
|
}
|
||||||
|
@@ -34,6 +34,8 @@ import android.content.pm.PackageManager;
|
|||||||
import android.content.pm.PackageManager.NameNotFoundException;
|
import android.content.pm.PackageManager.NameNotFoundException;
|
||||||
import android.content.pm.ResolveInfo;
|
import android.content.pm.ResolveInfo;
|
||||||
import android.content.pm.UserInfo;
|
import android.content.pm.UserInfo;
|
||||||
|
import android.content.res.Resources;
|
||||||
|
import android.icu.text.ListFormatter;
|
||||||
import android.net.INetworkStatsService;
|
import android.net.INetworkStatsService;
|
||||||
import android.net.INetworkStatsSession;
|
import android.net.INetworkStatsSession;
|
||||||
import android.net.NetworkTemplate;
|
import android.net.NetworkTemplate;
|
||||||
@@ -78,6 +80,7 @@ import com.android.settings.notification.NotificationBackend.AppRow;
|
|||||||
|
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -493,7 +496,7 @@ public class InstalledAppDetails extends AppInfoBase
|
|||||||
// Update the preference summaries.
|
// Update the preference summaries.
|
||||||
Activity context = getActivity();
|
Activity context = getActivity();
|
||||||
mStoragePreference.setSummary(AppStorageSettings.getSummary(mAppEntry, context));
|
mStoragePreference.setSummary(AppStorageSettings.getSummary(mAppEntry, context));
|
||||||
PermissionsSummaryHelper.getPermissionCounts(getContext(), mPackageName,
|
PermissionsSummaryHelper.getPermissionSummary(getContext(), mPackageName,
|
||||||
mPermissionCallback);
|
mPermissionCallback);
|
||||||
mLaunchPreference.setSummary(Utils.getLaunchByDeafaultSummary(mAppEntry, mUsbManager,
|
mLaunchPreference.setSummary(Utils.getLaunchByDeafaultSummary(mAppEntry, mUsbManager,
|
||||||
mPm, context));
|
mPm, context));
|
||||||
@@ -918,20 +921,40 @@ public class InstalledAppDetails extends AppInfoBase
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private final PermissionsResultCallback mPermissionCallback = new PermissionsResultCallback() {
|
private final PermissionsResultCallback mPermissionCallback
|
||||||
|
= new PermissionsResultCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onPermissionCountResult(int[] result) {
|
public void onPermissionSummaryResult(int[] counts, CharSequence[] groupLabels) {
|
||||||
if (getActivity() == null) {
|
final Resources res = getResources();
|
||||||
return;
|
CharSequence summary = null;
|
||||||
}
|
boolean enabled = false;
|
||||||
if (result != null) {
|
if (counts != null) {
|
||||||
mPermissionsPreference.setSummary(getResources().getQuantityString(
|
int totalCount = counts[1];
|
||||||
R.plurals.runtime_permissions_summary, result[1], result[0], result[1]));
|
int additionalCounts = counts[2];
|
||||||
} else {
|
|
||||||
mPermissionsPreference.setSummary(null);
|
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);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -27,7 +27,7 @@ public class PermissionsSummaryHelper {
|
|||||||
private static final String ACTION_APP_COUNT_RESPONSE
|
private static final String ACTION_APP_COUNT_RESPONSE
|
||||||
= "com.android.settings.APP_COUNT_RESPONSE";
|
= "com.android.settings.APP_COUNT_RESPONSE";
|
||||||
|
|
||||||
public static void getPermissionCounts(Context context, String pkg,
|
public static void getPermissionSummary(Context context, String pkg,
|
||||||
PermissionsResultCallback callback) {
|
PermissionsResultCallback callback) {
|
||||||
Intent request = new Intent(Intent.ACTION_GET_PERMISSIONS_COUNT);
|
Intent request = new Intent(Intent.ACTION_GET_PERMISSIONS_COUNT);
|
||||||
request.putExtra(Intent.EXTRA_PACKAGE_NAME, pkg);
|
request.putExtra(Intent.EXTRA_PACKAGE_NAME, pkg);
|
||||||
@@ -45,8 +45,13 @@ public class PermissionsSummaryHelper {
|
|||||||
BroadcastReceiver receiver = new BroadcastReceiver() {
|
BroadcastReceiver receiver = new BroadcastReceiver() {
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
int[] result = intent.getIntArrayExtra(Intent.EXTRA_GET_PERMISSIONS_COUNT_RESULT);
|
int[] counts = intent.getIntArrayExtra(Intent.EXTRA_GET_PERMISSIONS_COUNT_RESULT);
|
||||||
callback.onPermissionCountResult(result);
|
|
||||||
|
CharSequence[] groups = intent.getCharSequenceArrayExtra(
|
||||||
|
Intent.EXTRA_GET_PERMISSIONS_GROUP_LIST_RESULT);
|
||||||
|
|
||||||
|
callback.onPermissionSummaryResult(counts, groups);
|
||||||
|
|
||||||
context.unregisterReceiver(this);
|
context.unregisterReceiver(this);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -57,6 +62,6 @@ public class PermissionsSummaryHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public interface PermissionsResultCallback {
|
public interface PermissionsResultCallback {
|
||||||
void onPermissionCountResult(int[] result);
|
void onPermissionSummaryResult(int[] counts, CharSequence[] groupLabels);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user