Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0bd18745 authored by Makoto Onuki's avatar Makoto Onuki Committed by Android (Google) Code Review
Browse files

Merge "Show list of permissions instead of just numbers" into mnc-dev

parents 275e6f75 375c3a08
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -6479,6 +6479,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] -->
+3 −3
Original line number Diff line number Diff line
@@ -129,13 +129,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);
            }
+36 −13
Original line number Diff line number Diff line
@@ -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;
@@ -79,6 +81,7 @@ import com.android.settingslib.applications.ApplicationsState.AppEntry;

import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;

@@ -494,7 +497,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));
@@ -919,20 +922,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);
        }
    };
}

+9 −4
Original line number Diff line number Diff line
@@ -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);
@@ -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);
            }
        };
@@ -57,6 +62,6 @@ public class PermissionsSummaryHelper {
    }

    public interface PermissionsResultCallback {
        void onPermissionCountResult(int[] result);
        void onPermissionSummaryResult(int[] counts, CharSequence[] groupLabels);
    }
}