android.process.media+sd,android P系统WRITE_MEDIA_STORAGE添加读写SD卡权限
由于android P 版本google把android.Permission.WRITE_MEDIA_STORAGE中sd卡的讀寫權限移除了,導致系統文件管理中的文件無法直接復制到SD卡,所以需要把SD卡的讀寫權限加上到WRITE_MEDIA_STORAGE權限中去,
方法一、
1、frameworks\base\data\etc\platform.xml中添加:
2、frameworks\base\services\core\java\com\android\server\pm\PackageManagerService.java
...
public int getMountMode(int uid, String packageName) {
if (Process.isIsolated(uid)) {
return Zygote.MOUNT_EXTERNAL_NONE;
}
// modify android.Permission.WRITE_MEDIA_STORAGE add sdcard_rw permission start
if (checkUidPermission(WRITE_MEDIA_STORAGE, uid) == PERMISSION_GRANTED) {
return Zygote.MOUNT_EXTERNAL_DEFAULT;
}
// momdify end
if (checkUidPermission(READ_EXTERNAL_STORAGE, uid) == PERMISSION_DENIED) {
return Zygote.MOUNT_EXTERNAL_DEFAULT;
}
if (checkUidPermission(WRITE_EXTERNAL_STORAGE, uid) == PERMISSION_DENIED) {
return Zygote.MOUNT_EXTERNAL_READ;
}
return Zygote.MOUNT_EXTERNAL_WRITE;
}
...
方法二、修改system\vold\model\PublicVolume.cpp
...
if (getMountFlags() & MountFlags::kPrimary) {
if (execl(kFusePath, kFusePath,
"-u", "1023", // AID_MEDIA_RW
"-g", "1023", // AID_MEDIA_RW
"-U", std::to_string(getMountUserId()).c_str(),
"-w",
mRawPath.c_str(),
stableName.c_str(),
NULL)) {
PLOG(ERROR) << "Failed to exec";
}
} else {
if (execl(kFusePath, kFusePath,
"-u", "1023", // AID_MEDIA_RW
"-g", "1023", // AID_MEDIA_RW
"-U", std::to_string(getMountUserId()).c_str(),
"-w", // add this
mRawPath.c_str(),
stableName.c_str(),
NULL)) {
PLOG(ERROR) << "Failed to exec";
}
}
總結
以上是生活随笔為你收集整理的android.process.media+sd,android P系统WRITE_MEDIA_STORAGE添加读写SD卡权限的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android studio开关按钮,A
- 下一篇: windows server2008无法