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,花了好幾天的時間。。

修改如下:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章