报错信息:
For security reasons, the system cannot issue a Uri permission grant to content://com.joson.adphonelauncher.fileProvider/name/DBoothLayout/AdPhoneLauncher.apk [user 0]; use startActivityAsCaller() instead
java.lang.SecurityException: Permission Denial: opening provider com.joson.adphonelauncher.MyProvider from ProcessRecord{8d253bb 1430:com.android.packageinstaller/u0a18} (pid=1430, uid=10018) that is not exported from UID 1000
原因是系统把provider给过滤了一下,最简单办法就是修改一下源码。
文件路径:
frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
在 ActivityManagerService.java (AMS) 中的checkGrantUriPermissionLocked()方 法内的如下代码块中打印的:
// 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 ("com.android.settings.files".equals(grantUri.uri.getAuthority())) {
// Exempted authority for cropping user photos in Settings app
} else if ("com.joson.adphonelauncher.fileProvider".equals(grantUri.uri.getAuthority())) {
}else {
Slog.w(TAG, "For security reasons, the system cannot issue a Uri permission"
+ " grant to " + grantUri + "; use startActivityAsCaller() instead");
return -1;
}
}

参考:
本文解析了在Android系统中遇到的UriPermission权限错误,详细介绍了错误信息的原因及解决方案,指出系统因安全原因拒绝直接授予Uri权限,并提供修改源码的具体路径及方法。
 SYSTEM_UID应用无法使用FileProvider&spm=1001.2101.3001.5002&articleId=99859756&d=1&t=3&u=dd0d4b0970b74a8b8728f7b48e92fa16)
1145

被折叠的 条评论
为什么被折叠?



