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

Commit 99222d21 authored by Dianne Hackborn's avatar Dianne Hackborn
Browse files

Finish up issue #6249094: Display permissions based on relevance to private data

Added bitmaps for permission group icons.  We had to pick either
icons for a dark or light background, and it had to be light for
settings, so the installer theme has gone back to dark.

Tweaked the permission groups to match the icons.

Redid the group priorities to make them correct (they were written
with higher priorities being less important).

Fixed bug where priority was not being used for system apps.

Change-Id: Ia3d3f0c1614a11b4cfd11682ce9e6c9f87d75c06
parent 139e5aa1
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -144,6 +144,7 @@ package android {
    field public static final java.lang.String AFFECTS_BATTERY = "android.permission-group.AFFECTS_BATTERY";
    field public static final java.lang.String APP_INFO = "android.permission-group.APP_INFO";
    field public static final java.lang.String AUDIO_SETTINGS = "android.permission-group.AUDIO_SETTINGS";
    field public static final java.lang.String BLUETOOTH_NETWORK = "android.permission-group.BLUETOOTH_NETWORK";
    field public static final java.lang.String BOOKMARKS = "android.permission-group.BOOKMARKS";
    field public static final java.lang.String CALENDAR = "android.permission-group.CALENDAR";
    field public static final java.lang.String CAMERA = "android.permission-group.CAMERA";
@@ -169,6 +170,7 @@ package android {
    field public static final java.lang.String USER_DICTIONARY = "android.permission-group.USER_DICTIONARY";
    field public static final java.lang.String VOICEMAIL = "android.permission-group.VOICEMAIL";
    field public static final java.lang.String WALLPAPER = "android.permission-group.WALLPAPER";
    field public static final java.lang.String WRITE_USER_DICTIONARY = "android.permission-group.WRITE_USER_DICTIONARY";
  }
  public final class R {
+1 −1
Original line number Diff line number Diff line
@@ -1458,7 +1458,7 @@ public class PackageParser {
                com.android.internal.R.styleable.AndroidManifestPermissionGroup_permissionGroupFlags, 0);
        perm.info.priority = sa.getInt(
                com.android.internal.R.styleable.AndroidManifestPermissionGroup_priority, 0);
        if (perm.info.priority > 0 && (flags&PARSE_IS_SYSTEM) != 0) {
        if (perm.info.priority > 0 && (flags&PARSE_IS_SYSTEM) == 0) {
            perm.info.priority = 0;
        }

+52 −12
Original line number Diff line number Diff line
@@ -98,6 +98,20 @@ public class AppSecurityPermissions {
        MyPermissionGroupInfo(PermissionGroupInfo info) {
            super(info);
        }

        public Drawable loadGroupIcon(PackageManager pm) {
            if (icon != 0) {
                return loadIcon(pm);
            } else {
                ApplicationInfo appInfo;
                try {
                    appInfo = pm.getApplicationInfo(packageName, 0);
                    return appInfo.loadIcon(pm);
                } catch (NameNotFoundException e) {
                }
            }
            return null;
        }
    }

    static class MyPermissionInfo extends PermissionInfo {
@@ -155,16 +169,7 @@ public class AppSecurityPermissions {
            PackageManager pm = getContext().getPackageManager();
            Drawable icon = null;
            if (first) {
                if (grp.icon != 0) {
                    icon = grp.loadIcon(pm);
                } else {
                    ApplicationInfo appInfo;
                    try {
                        appInfo = pm.getApplicationInfo(grp.packageName, 0);
                        icon = appInfo.loadIcon(pm);
                    } catch (NameNotFoundException e) {
                    }
                }
                icon = grp.loadGroupIcon(pm);
            }
            CharSequence label = perm.mLabel;
            if (perm.mNew && newPermPrefix != null) {
@@ -191,10 +196,28 @@ public class AppSecurityPermissions {
                if (mDialog != null) {
                    mDialog.dismiss();
                }
                PackageManager pm = getContext().getPackageManager();
                AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
                builder.setTitle(mGroup.mLabel);
                builder.setMessage(mPerm.loadDescription(getContext().getPackageManager()));
                if (mPerm.descriptionRes != 0) {
                    builder.setMessage(mPerm.loadDescription(pm));
                } else {
                    CharSequence appName;
                    try {
                        ApplicationInfo app = pm.getApplicationInfo(mPerm.packageName, 0);
                        appName = app.loadLabel(pm);
                    } catch (NameNotFoundException e) {
                        appName = mPerm.packageName;
                    }
                    StringBuilder sbuilder = new StringBuilder(128);
                    sbuilder.append(getContext().getString(
                            R.string.perms_description_app, appName));
                    sbuilder.append("\n\n");
                    sbuilder.append(mPerm.name);
                    builder.setMessage(sbuilder.toString());
                }
                builder.setCancelable(true);
                builder.setIcon(mGroup.loadGroupIcon(pm));
                mDialog = builder.show();
                mDialog.setCanceledOnTouchOutside(true);
            }
@@ -611,9 +634,26 @@ public class AppSecurityPermissions {
        }

        for (MyPermissionGroupInfo pgrp : mPermGroups.values()) {
            if (pgrp.labelRes != 0 || pgrp.nonLocalizedLabel != null) {
                pgrp.mLabel = pgrp.loadLabel(mPm);
            } else {
                ApplicationInfo app;
                try {
                    app = mPm.getApplicationInfo(pgrp.packageName, 0);
                    pgrp.mLabel = app.loadLabel(mPm);
                } catch (NameNotFoundException e) {
                    pgrp.mLabel = pgrp.loadLabel(mPm);
                }
            }
            mPermGroupsList.add(pgrp);
        }
        Collections.sort(mPermGroupsList, mPermGroupComparator);
        if (false) {
            for (MyPermissionGroupInfo grp : mPermGroupsList) {
                Log.i("foo", "Group " + grp.name + " personal="
                        + ((grp.flags&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0)
                        + " priority=" + grp.priority);
            }
        }
    }
}
+82 −37
Original line number Diff line number Diff line
@@ -155,9 +155,10 @@
         receiving or reading an MMS. -->
    <permission-group android:name="android.permission-group.MESSAGES"
        android:label="@string/permgrouplab_messages"
        android:icon="@drawable/perm_group_messages"
        android:description="@string/permgroupdesc_messages"
        android:permissionGroupFlags="personalInfo"
        android:priority="2"/>
        android:priority="360"/>

  <!-- Allows an application to send SMS messages. -->
    <permission android:name="android.permission.SEND_SMS"
@@ -250,9 +251,10 @@

    <permission-group android:name="android.permission-group.SOCIAL_INFO"
        android:label="@string/permgrouplab_socialInfo"
        android:icon="@drawable/perm_group_social_info"
        android:description="@string/permgroupdesc_socialInfo"
        android:permissionGroupFlags="personalInfo"
        android:priority="6" />
        android:priority="320" />

    <!-- Allows an application to read the user's contacts data. -->
    <permission android:name="android.permission.READ_CONTACTS"
@@ -310,9 +312,10 @@
         distinct permissions). -->
    <permission-group android:name="android.permission-group.PERSONAL_INFO"
        android:label="@string/permgrouplab_personalInfo"
        android:icon="@drawable/perm_group_personal_info"
        android:description="@string/permgroupdesc_personalInfo"
        android:permissionGroupFlags="personalInfo"
        android:priority="7" />
        android:priority="310" />

    <!-- Allows an application to read the user's personal profile data. -->
    <permission android:name="android.permission.READ_PROFILE"
@@ -338,9 +341,10 @@
         calendar to create / view events.-->
    <permission-group android:name="android.permission-group.CALENDAR"
        android:label="@string/permgrouplab_calendar"
        android:icon="@drawable/perm_group_calendar"
        android:description="@string/permgroupdesc_calendar"
        android:permissionGroupFlags="personalInfo"
        android:priority="9" />
        android:priority="290" />

    <!-- Allows an application to read the user's calendar data. -->
    <permission android:name="android.permission.READ_CALENDAR"
@@ -366,9 +370,10 @@
         calendar to create / view events.-->
    <permission-group android:name="android.permission-group.USER_DICTIONARY"
        android:label="@string/permgrouplab_dictionary"
        android:icon="@drawable/perm_group_user_dictionary"
        android:description="@string/permgroupdesc_dictionary"
        android:permissionGroupFlags="personalInfo"
        android:priority="20" />
        android:priority="170" />

    <!-- Allows an application to read the user dictionary. This should
         really only be required by an IME, or a dictionary editor like
@@ -379,9 +384,18 @@
        android:label="@string/permlab_readDictionary"
        android:description="@string/permdesc_readDictionary" />

    <!-- Used for permissions that provide access to the user
         calendar to create / view events.-->
    <permission-group android:name="android.permission-group.WRITE_USER_DICTIONARY"
        android:label="@string/permgrouplab_writeDictionary"
        android:icon="@drawable/perm_group_user_dictionary_write"
        android:description="@string/permgroupdesc_writeDictionary"
        android:permissionGroupFlags="personalInfo"
        android:priority="160" />

    <!-- Allows an application to write to the user dictionary. -->
    <permission android:name="android.permission.WRITE_USER_DICTIONARY"
        android:permissionGroup="android.permission-group.USER_DICTIONARY"
        android:permissionGroup="android.permission-group.WRITE_USER_DICTIONARY"
        android:protectionLevel="normal"
        android:label="@string/permlab_writeDictionary"
        android:description="@string/permdesc_writeDictionary" />
@@ -395,9 +409,10 @@
         bookmarks and browser history.-->
    <permission-group android:name="android.permission-group.BOOKMARKS"
        android:label="@string/permgrouplab_bookmarks"
        android:icon="@drawable/perm_group_bookmarks"
        android:description="@string/permgroupdesc_bookmarks"
        android:permissionGroupFlags="personalInfo"
        android:priority="8" />
        android:priority="300" />

    <!-- Allows an application to read (but not write) the user's
        browsing history and bookmarks. -->
@@ -423,9 +438,10 @@
    <!-- Used for permissions that provide access to the user voicemail box. -->
    <permission-group android:name="android.permission-group.DEVICE_ALARMS"
        android:label="@string/permgrouplab_deviceAlarms"
        android:icon="@drawable/perm_group_device_alarms"
        android:description="@string/permgroupdesc_deviceAlarms"
        android:permissionGroupFlags="personalInfo"
        android:priority="16"/>
        android:priority="210" />

    <!-- Allows an application to broadcast an Intent to set an alarm for the
         user. -->
@@ -443,9 +459,10 @@
    <!-- Used for permissions that provide access to the user voicemail box. -->
    <permission-group android:name="android.permission-group.VOICEMAIL"
        android:label="@string/permgrouplab_voicemail"
        android:icon="@drawable/perm_group_voicemail"
        android:description="@string/permgroupdesc_voicemail"
        android:permissionGroupFlags="personalInfo"
        android:priority="10" />
        android:priority="280" />

   <!-- Allows an application to add voicemails into the system. -->
    <permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL"
@@ -463,9 +480,10 @@
         location. -->
    <permission-group android:name="android.permission-group.LOCATION"
        android:label="@string/permgrouplab_location"
        android:icon="@drawable/perm_group_location"
        android:description="@string/permgroupdesc_location"
        android:permissionGroupFlags="personalInfo"
        android:priority="5" />
        android:priority="330" />

    <!-- Allows an application to access fine (e.g., GPS) location -->
    <permission android:name="android.permission.ACCESS_FINE_LOCATION"
@@ -512,8 +530,9 @@
         or other related network operations. -->
    <permission-group android:name="android.permission-group.NETWORK"
        android:label="@string/permgrouplab_network"
        android:icon="@drawable/perm_group_network"
        android:description="@string/permgroupdesc_network"
        android:priority="11" />
        android:priority="270" />

    <!-- Allows applications to open network sockets. -->
    <permission android:name="android.permission.INTERNET"
@@ -562,28 +581,36 @@
    <!-- ======================================= -->
    <eat-comment />

    <!-- Used for permissions that provide access to network services that
         are for peripherals and other nearby devices.  These networks
         generally do not provide IP based networking or internet access.-->
    <permission-group android:name="android.permission-group.SHORTRANGE_NETWORK"
        android:label="@string/permgrouplab_shortRangeNetwork"
        android:description="@string/permgroupdesc_shortRangeNetwork"
        android:priority="12" />
    <!-- Used for permissions that provide access to other devices through Bluetooth.-->
    <permission-group android:name="android.permission-group.BLUETOOTH_NETWORK"
        android:label="@string/permgrouplab_bluetoothNetwork"
        android:icon="@drawable/perm_group_bluetooth"
        android:description="@string/permgroupdesc_bluetoothNetwork"
        android:priority="260" />

    <!-- Allows applications to connect to paired bluetooth devices -->
    <permission android:name="android.permission.BLUETOOTH"
        android:permissionGroup="android.permission-group.SHORTRANGE_NETWORK"
        android:permissionGroup="android.permission-group.BLUETOOTH_NETWORK"
        android:protectionLevel="dangerous"
        android:description="@string/permdesc_bluetooth"
        android:label="@string/permlab_bluetooth" />
        
    <!-- Allows applications to discover and pair bluetooth devices -->
    <permission android:name="android.permission.BLUETOOTH_ADMIN"
        android:permissionGroup="android.permission-group.SHORTRANGE_NETWORK"
        android:permissionGroup="android.permission-group.BLUETOOTH_NETWORK"
        android:protectionLevel="dangerous"
        android:description="@string/permdesc_bluetoothAdmin"
        android:label="@string/permlab_bluetoothAdmin" />
   
    <!-- Used for permissions that provide access to network services that
         are for peripherals and other nearby devices.  These networks
         generally do not provide IP based networking or internet access.-->
    <permission-group android:name="android.permission-group.SHORTRANGE_NETWORK"
        android:label="@string/permgrouplab_shortrangeNetwork"
        android:icon="@drawable/perm_group_shortrange_network"
        android:description="@string/permgroupdesc_shortrangeNetwork"
        android:priority="250" />

    <!-- Allows applications to perform I/O operations over NFC -->
    <permission android:name="android.permission.NFC"
        android:permissionGroup="android.permission-group.SHORTRANGE_NETWORK"
@@ -607,9 +634,10 @@
         by the Account Manager. -->
    <permission-group android:name="android.permission-group.ACCOUNTS"
        android:label="@string/permgrouplab_accounts"
        android:icon="@drawable/perm_group_accounts"
        android:description="@string/permgroupdesc_accounts"
        android:permissionGroupFlags="personalInfo"
        android:priority="17" />
        android:priority="200" />

    <!-- Allows access to the list of accounts in the Accounts Service -->
    <permission android:name="android.permission.GET_ACCOUNTS"
@@ -659,8 +687,9 @@

    <permission-group android:name="android.permission-group.AFFECTS_BATTERY"
        android:label="@string/permgrouplab_affectsBattery"
        android:icon="@drawable/perm_group_affects_battery"
        android:description="@string/permgroupdesc_affectsBattery"
        android:priority="19" />
        android:priority="180" />

    <!-- Allows applications to enter Wi-Fi Multicast mode -->
    <permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"
@@ -699,8 +728,9 @@
         the device. -->
    <permission-group android:name="android.permission-group.AUDIO_SETTINGS"
        android:label="@string/permgrouplab_audioSettings"
        android:icon="@drawable/perm_group_audio_settings"
        android:description="@string/permgroupdesc_audioSettings"
        android:priority="25" />
        android:priority="130" />

    <!-- Allows an application to modify global audio settings -->
    <permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"
@@ -719,7 +749,7 @@
    <permission-group android:name="android.permission-group.HARDWARE_CONTROLS"
        android:label="@string/permgrouplab_hardwareControls"
        android:description="@string/permgroupdesc_hardwareControls"
        android:priority="26"/>
        android:priority="260"/>

    <!-- Allows an application to manage preferences and permissions for USB devices
         @hide -->
@@ -766,9 +796,10 @@
         but are in a separate (more visible) permission group. -->
    <permission-group android:name="android.permission-group.MICROPHONE"
        android:label="@string/permgrouplab_microphone"
        android:icon="@drawable/perm_group_microphone"
        android:description="@string/permgroupdesc_microphone"
        android:permissionGroupFlags="personalInfo"
        android:priority="4" />
        android:priority="340" />

    <!-- Allows an application to record audio -->
    <permission android:name="android.permission.RECORD_AUDIO"
@@ -786,9 +817,10 @@
         camera or capturing images/video from the device. -->
    <permission-group android:name="android.permission-group.CAMERA"
        android:label="@string/permgrouplab_camera"
        android:icon="@drawable/perm_group_camera"
        android:description="@string/permgroupdesc_camera"
        android:permissionGroupFlags="personalInfo"
        android:priority="3" />
        android:priority="350" />

    <!-- Required to be able to access the camera device.
         <p>This will automatically enforce the <a
@@ -813,9 +845,10 @@
         and modifying the phone state. -->
    <permission-group android:name="android.permission-group.PHONE_CALLS"
        android:label="@string/permgrouplab_phoneCalls"
        android:icon="@drawable/perm_group_phone_calls"
        android:description="@string/permgroupdesc_phoneCalls"
        android:permissionGroupFlags="personalInfo"
        android:priority="1" />
        android:priority="370" />

    <!-- Allows an application to monitor, modify, or abort outgoing
         calls. -->
@@ -870,9 +903,10 @@
    <!-- Group of permissions that are related to SD card access. -->
    <permission-group android:name="android.permission-group.STORAGE"
        android:label="@string/permgrouplab_storage"
        android:icon="@drawable/perm_group_storage"
        android:description="@string/permgroupdesc_storage"
        android:permissionGroupFlags="personalInfo"
        android:priority="13" />
        android:priority="240" />

    <!-- Allows an application to read from external storage -->
    <permission android:name="android.permission.READ_EXTERNAL_STORAGE"
@@ -904,8 +938,10 @@
    <!-- Group of permissions that are related to the screenlock. -->
    <permission-group android:name="android.permission-group.SCREENLOCK"
        android:label="@string/permgrouplab_storage"
        android:icon="@drawable/perm_group_screenlock"
        android:permissionGroupFlags="personalInfo"
        android:description="@string/permgroupdesc_storage" />
        android:description="@string/permgroupdesc_storage"
        android:priority="230" />

    <!-- Allows applications to disable the keyguard -->
    <permission android:name="android.permission.DISABLE_KEYGUARD"
@@ -924,7 +960,9 @@
         running apps, or killing background processes. -->
    <permission-group android:name="android.permission-group.APP_INFO"
        android:label="@string/permgrouplab_appInfo"
        android:description="@string/permgroupdesc_appInfo" />
        android:icon="@drawable/perm_group_app_info"
        android:description="@string/permgroupdesc_appInfo"
        android:priority="220" />

    <!-- Allows an application to get information about the currently
         or recently running tasks. -->
@@ -990,8 +1028,9 @@
         another application displays UI to the user. -->
    <permission-group android:name="android.permission-group.DISPLAY"
        android:label="@string/permgrouplab_display"
        android:icon="@drawable/perm_group_display"
        android:description="@string/permgroupdesc_display"
        android:priority="18"/>
        android:priority="190"/>

    <!-- Allows an application to open windows using the type
         {@link android.view.WindowManager.LayoutParams#TYPE_SYSTEM_ALERT},
@@ -1013,8 +1052,9 @@
         another application displays UI to the user. -->
    <permission-group android:name="android.permission-group.WALLPAPER"
        android:label="@string/permgrouplab_wallpaper"
        android:icon="@drawable/perm_group_wallpaper"
        android:description="@string/permgroupdesc_wallpaper"
        android:priority="22" />
        android:priority="150" />

    <!-- Allows applications to set the wallpaper -->
    <permission android:name="android.permission.SET_WALLPAPER"
@@ -1038,8 +1078,9 @@
    <!-- Group of permissions that are related to system clock. -->
    <permission-group android:name="android.permission-group.SYSTEM_CLOCK"
        android:label="@string/permgrouplab_systemClock"
        android:icon="@drawable/perm_group_system_clock"
        android:description="@string/permgroupdesc_systemClock"
        android:priority="23" />
        android:priority="140" />

    <!-- Allows applications to set the system time -->
    <permission android:name="android.permission.SET_TIME"
@@ -1061,7 +1102,9 @@
    <!-- Used for permissions that change the status bar -->
    <permission-group android:name="android.permission-group.STATUS_BAR"
        android:label="@string/permgrouplab_statusBar"
        android:description="@string/permgroupdesc_statusBar" />
        android:icon="@drawable/perm_group_status_bar"
        android:description="@string/permgroupdesc_statusBar"
        android:priority="110" />

    <!-- Allows an application to expand or collapse the status bar. -->
    <permission android:name="android.permission.EXPAND_STATUS_BAR"
@@ -1078,8 +1121,9 @@
         related information. -->
    <permission-group android:name="android.permission-group.SYNC_SETTINGS"
        android:label="@string/permgrouplab_syncSettings"
        android:icon="@drawable/perm_group_sync_settings"
        android:description="@string/permgroupdesc_syncSettings"
        android:priority="29" />
        android:priority="120" />

    <!-- Allows applications to read the sync settings -->
    <permission android:name="android.permission.READ_SYNC_SETTINGS"
@@ -1116,8 +1160,9 @@
         such as writing the global system settings. -->
    <permission-group android:name="android.permission-group.SYSTEM_TOOLS"
        android:label="@string/permgrouplab_systemTools"
        android:icon="@drawable/perm_group_system_tools"
        android:description="@string/permgroupdesc_systemTools"
        android:priority="30" />
        android:priority="100" />

    <!-- @hide Change the screen compatibility mode of applications -->
    <permission android:name="android.permission.SET_SCREEN_COMPATIBILITY"
@@ -1345,7 +1390,7 @@
    <permission-group android:name="android.permission-group.DEVELOPMENT_TOOLS"
        android:label="@string/permgrouplab_developmentTools"
        android:description="@string/permgroupdesc_developmentTools"
        android:priority="31" />
        android:priority="310" />

    <!-- Allows an application to read or write the secure system settings. -->
    <permission android:name="android.permission.WRITE_SECURE_SETTINGS"
+1.7 KiB
Loading image diff...
Loading