android 外置TF卡/Android/data/ 读写问题
2022-08-18 本文已影响0人
gale_小米
com.android.providers.media.module MediaProvider: Can't create a file in another app's external directory
在这里坐下处理
A100_R11.0_MID\packages\providers\MediaProvider\src\com\android\providers\media\MediaProvider.java
把这个限制过滤掉
/**
* Returns {@code true} if {@link #mCallingIdentity#getSharedPackages(String)} contains the
* given package name, {@code false} otherwise.
* <p> Assumes that {@code mCallingIdentity} has been properly set to reflect the calling
* package.
*/
private boolean isCallingIdentitySharedPackageName(@NonNull String packageName) {
for (String sharedPkgName : mCallingIdentity.get().getSharedPackageNames()) {
Log.e(TAG, " sharedPkgName.equals="+(packageName.toLowerCase(Locale.ROOT)
.equals(sharedPkgName.toLowerCase(Locale.ROOT))));
Log.e(TAG, " sharedPkgName.contains="+(packageName.toLowerCase(Locale.ROOT).contains("xxx")));
if (packageName.toLowerCase(Locale.ROOT)
.equals(sharedPkgName.toLowerCase(Locale.ROOT))
|| packageName.toLowerCase(Locale.ROOT).contains("xxx")) {
return true;
}
}
return false;
}
2.就是在TF卡的某些目录下不能创建文件夹和读写文件
No SD card Present. Not able to read and write. Found path
可以在 Index: frameworks/base/core/java/android/app/ActivityThread.java 给某些目录提升权限
private static class AndroidOs extends ForwardingOs {
...
@Override
public boolean access(String path, int mode) throws ErrnoException {
if (path != null && path.startsWith(DEPRECATE_DATA_PREFIX)) {
// If we opened it okay, then access check succeeded
IoUtils.closeQuietly(
openDeprecatedDataPath(path, FileUtils.translateModeAccessToPosix(mode)));
return true;
} else {
+ if(!path.startsWith("/storage/emulated") && path.contains("/Android/data/xxx")){
+ mode=0;
+ }
+ Log.v(TAG, "access path=" + path + " mode " + mode);
return super.access(path, mode);
}
...
}