Android O SYSTEM_UID应用无法使用FileProvider问题小结

    去年上传了关于7.0拍照剪裁的demo,想想已经一年时间过去了,今年适配Android O,合代码后遇到了Permission Denial: opening provider android.support.v4.content.FileProvider.....from uid 1000问题,百思不得其解,我把去年的Demo拉下来后放到8.0上使用,发现demo可以正常运行,我本地的代码无法运行,一拍照或者剪裁就崩溃,很奇怪,之后各种复制黏贴,最后把demo上的代码 放到了公司代码里,发现还是崩溃。。。我都要崩溃了,直到发现了不一样的地方。

sharedUserId="android.uid.system", 去掉了这句系统应用后,代码可以正常运行了,这引起了我的好奇,查看源码追踪到了

ActivityManagerService中,在checkGrantUriPermissionLocked()方法中,找到了原因,代码如下:


这谷歌真是无语了,,,对权限的把控越来越严了

文件位置:frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java,修改了frameworks后,一切就OK了,记录下,挺有意思的一个Bug,花了好几天的时间。。

修改如下:


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值