Loading res/values/strings.xml +12 −0 Original line number Diff line number Diff line Loading @@ -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> </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] --> <string name="launch_defaults_some">Some defaults set</string> <!-- Launch defaults preference summary with none set [CHAR LIMIT=40] --> Loading src/com/android/settings/applications/AdvancedAppSettings.java +3 −3 Original line number Diff line number Diff line Loading @@ -128,13 +128,13 @@ public class AdvancedAppSettings extends SettingsPreferenceFragment implements private final PermissionsResultCallback mPermissionCallback = new PermissionsResultCallback() { @Override public void onPermissionCountResult(int[] result) { public void onPermissionSummaryResult(int[] counts, CharSequence[] groupLabels) { if (getActivity() == null) { return; } if (result != null) { if (counts != null) { mAppPermsPreference.setSummary(getContext().getString( R.string.app_permissions_summary, result[0], result[1])); R.string.app_permissions_summary, counts[0], counts[1])); } else { mAppPermsPreference.setSummary(null); } Loading src/com/android/settings/applications/InstalledAppDetails.java +36 −13 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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)); Loading Loading @@ -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])); 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 { mPermissionsPreference.setSummary(null); summary = ListFormatter.getInstance().format(list); } } } mPermissionsPreference.setSummary(summary); mPermissionsPreference.setEnabled(enabled); } }; } src/com/android/settings/applications/PermissionsSummaryHelper.java +9 −4 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ public class PermissionsSummaryHelper { private static final String ACTION_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) { Intent request = new Intent(Intent.ACTION_GET_PERMISSIONS_COUNT); request.putExtra(Intent.EXTRA_PACKAGE_NAME, pkg); Loading @@ -45,8 +45,13 @@ public class PermissionsSummaryHelper { BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { int[] result = intent.getIntArrayExtra(Intent.EXTRA_GET_PERMISSIONS_COUNT_RESULT); callback.onPermissionCountResult(result); int[] counts = intent.getIntArrayExtra(Intent.EXTRA_GET_PERMISSIONS_COUNT_RESULT); CharSequence[] groups = intent.getCharSequenceArrayExtra( Intent.EXTRA_GET_PERMISSIONS_GROUP_LIST_RESULT); callback.onPermissionSummaryResult(counts, groups); context.unregisterReceiver(this); } }; Loading @@ -57,6 +62,6 @@ public class PermissionsSummaryHelper { } public interface PermissionsResultCallback { void onPermissionCountResult(int[] result); void onPermissionSummaryResult(int[] counts, CharSequence[] groupLabels); } } Loading
res/values/strings.xml +12 −0 Original line number Diff line number Diff line Loading @@ -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> </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] --> <string name="launch_defaults_some">Some defaults set</string> <!-- Launch defaults preference summary with none set [CHAR LIMIT=40] --> Loading
src/com/android/settings/applications/AdvancedAppSettings.java +3 −3 Original line number Diff line number Diff line Loading @@ -128,13 +128,13 @@ public class AdvancedAppSettings extends SettingsPreferenceFragment implements private final PermissionsResultCallback mPermissionCallback = new PermissionsResultCallback() { @Override public void onPermissionCountResult(int[] result) { public void onPermissionSummaryResult(int[] counts, CharSequence[] groupLabels) { if (getActivity() == null) { return; } if (result != null) { if (counts != null) { mAppPermsPreference.setSummary(getContext().getString( R.string.app_permissions_summary, result[0], result[1])); R.string.app_permissions_summary, counts[0], counts[1])); } else { mAppPermsPreference.setSummary(null); } Loading
src/com/android/settings/applications/InstalledAppDetails.java +36 −13 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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)); Loading Loading @@ -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])); 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 { mPermissionsPreference.setSummary(null); summary = ListFormatter.getInstance().format(list); } } } mPermissionsPreference.setSummary(summary); mPermissionsPreference.setEnabled(enabled); } }; }
src/com/android/settings/applications/PermissionsSummaryHelper.java +9 −4 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ public class PermissionsSummaryHelper { private static final String ACTION_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) { Intent request = new Intent(Intent.ACTION_GET_PERMISSIONS_COUNT); request.putExtra(Intent.EXTRA_PACKAGE_NAME, pkg); Loading @@ -45,8 +45,13 @@ public class PermissionsSummaryHelper { BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { int[] result = intent.getIntArrayExtra(Intent.EXTRA_GET_PERMISSIONS_COUNT_RESULT); callback.onPermissionCountResult(result); int[] counts = intent.getIntArrayExtra(Intent.EXTRA_GET_PERMISSIONS_COUNT_RESULT); CharSequence[] groups = intent.getCharSequenceArrayExtra( Intent.EXTRA_GET_PERMISSIONS_GROUP_LIST_RESULT); callback.onPermissionSummaryResult(counts, groups); context.unregisterReceiver(this); } }; Loading @@ -57,6 +62,6 @@ public class PermissionsSummaryHelper { } public interface PermissionsResultCallback { void onPermissionCountResult(int[] result); void onPermissionSummaryResult(int[] counts, CharSequence[] groupLabels); } }