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如何在广播接收器中启动活动和弹出对话框
- Android使用post方式上传图片到服务器的方法
- Android(安卓)7.0 以上安装Apk适配方案总结
- Android点击button触发Toast事件,弹出一个小小的消息框,几秒钟之
- INSTALL_FAILED_TEST_ONLY
- android phone application 通知missed call的过程
- Android(安卓)关于倒计时功能的实现
- Android:activity,fragment和service之我见(准备更新)
- Android用Webview播放视频问题