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,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值