android8.1 系统应用使用FileProvider时提示没有权限

android8.1系统默认就是不让SYSTEM_UID和ROOT_UID用户获取grantUri权限,需要修改ActivityManagerService.java里面的checkGrantUriPermissionLocked方法,去掉SYSTEM_UID不能获取权限问题:

--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -9095,7 +9095,7 @@ public class ActivityManagerService extends IActivityManager.Stub
         // Bail early if system is trying to hand out permissions directly; it
         // must always grant permissions on behalf of someone explicit.
         final int callingAppId = UserHandle.getAppId(callingUid);
-        if ((callingAppId == SYSTEM_UID) || (callingAppId == ROOT_UID)) {
+               if(callingAppId == ROOT_UID){
              
          if ("com.android.settings.files".equals(grantUri.uri.getAuthority())) {
                 // Exempted authority for cropping user photos in Settings app
                    } else {
                               Slog.w(TAG, "For security reasons, the system cannot issue a Uri permission"
                                               + " grant to " + grantUri + "; use startActivityAsCaller() instead");
                 return -1;
                        }
              }
 
         final String authority = grantUri.uri.getAuthority();
         final ProviderInfo pi = getProviderInfoLocked(authority, grantUri.sourceUserId,

你可能感兴趣的:(android)