现在我们正在迁移Android 11(R)用于测试目的,但我们面临着“许可被拒绝”的问题。
路径: /mnt/sdcard/Android/data/package_name/files/package_name/*
注意:使用下面的代码获取公共路径。
Context context = _activity.getApplicationContext();
return context.getExternalFilesDir(null) +"/" + getPackageName();
我们需要为Android 11(R)做什么特别的事情吗?
你能建议一下吗?
发布于 2020-06-18 08:14:16
@VMS android从android 11 on words开始强制使用作用域存储。要迁移到范围存储,请使用ApplicationContext.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).getPath();
我们不能将null传递给getExternalFilesDir();
发布于 2020-11-27 07:26:54
将requestLegacyExternalStorage添加到AndroidManifest.xml inside中:
<application
android:name=".Application"
android:allowBackup="true"
android:appComponentFactory="whateverString"
android:icon="@drawable/icon"
android:requestLegacyExternalStorage="true"
发布于 2020-05-14 06:15:12
您最有可能获得外部存储权限
清单:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
onCreate()方法:
int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_MEDIA);
} else {
readDataExternal();
}
重写onRequestPermissionsResult方法以获取回调:
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_READ_MEDIA:
if ((grantResults.length > 0) && (grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
readDataExternal();
}
break;
default:
break;
}
}
https://stackoverflow.com/questions/61790373
复制相似问题