OSDN Git Service

Hand out storage to more system apps.
authorJeff Sharkey <jsharkey@android.com>
Wed, 1 Jul 2015 00:32:45 +0000 (17:32 -0700)
committerJeff Sharkey <jsharkey@android.com>
Wed, 1 Jul 2015 00:32:48 +0000 (17:32 -0700)
Grant storage access to the Storage Access Framework provider that
offers to delegate access to storage devices.  Also grant to the
default music app.

Bug: 22104872
Change-Id: I8cf7dceec8b4c1e31f8ddd40b094ccd4ecb1caf8

services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java

index 04dce3a..d6e4909 100644 (file)
@@ -54,6 +54,7 @@ final class DefaultPermissionGrantPolicy {
     private static final boolean DEBUG = false;
 
     private static final String PACKAGE_MIME_TYPE = "application/vnd.android.package-archive";
+    private static final String AUDIO_MIME_TYPE = "audio/mpeg";
 
     private static final Set<String> PHONE_PERMISSIONS = new ArraySet<>();
     static {
@@ -176,7 +177,7 @@ final class DefaultPermissionGrantPolicy {
     }
 
     private void grantPermissionsToSysComponentsAndPrivApps(int userId) {
-        Log.i(TAG, "Granting permissions to platform components for user" + userId);
+        Log.i(TAG, "Granting permissions to platform components for user " + userId);
 
         synchronized (mService.mPackages) {
             for (PackageParser.Package pkg : mService.mPackages.values()) {
@@ -208,7 +209,7 @@ final class DefaultPermissionGrantPolicy {
     }
 
     private void grantDefaultSystemHandlerPermissions(int userId) {
-        Log.i(TAG, "Granting permissions to default platform handlers for user:" + userId);
+        Log.i(TAG, "Granting permissions to default platform handlers for user " + userId);
 
         final PackagesProvider imePackagesProvider;
         final PackagesProvider locationPackagesProvider;
@@ -322,6 +323,13 @@ final class DefaultPermissionGrantPolicy {
                 grantRuntimePermissionsLPw(downloadsUiPackage, STORAGE_PERMISSIONS, userId);
             }
 
+            // Storage provider
+            PackageParser.Package storagePackage = getDefaultProviderAuthorityPackageLPr(
+                    "com.android.externalstorage.documents", userId);
+            if (storagePackage != null) {
+                grantRuntimePermissionsLPw(storagePackage, STORAGE_PERMISSIONS, userId);
+            }
+
             // SMS
             if (smsAppPackageNames != null) {
                 for (String smsPackageName : smsAppPackageNames) {
@@ -478,6 +486,18 @@ final class DefaultPermissionGrantPolicy {
                 }
             }
 
+            // Music
+            Intent musicIntent = new Intent(Intent.ACTION_VIEW);
+            musicIntent.addCategory(Intent.CATEGORY_DEFAULT);
+            musicIntent.setDataAndType(Uri.fromFile(new File("foo.mp3")),
+                    AUDIO_MIME_TYPE);
+            PackageParser.Package musicPackage = getDefaultSystemHandlerActivityPackageLPr(
+                    musicIntent, userId);
+            if (musicPackage != null
+                    && doesPackageSupportRuntimePermissions(musicPackage)) {
+                grantRuntimePermissionsLPw(musicPackage, STORAGE_PERMISSIONS, userId);
+            }
+
             mService.mSettings.onDefaultRuntimePermissionsGrantedLPr(userId);
         }
     }