已授予权限,但不能读取和写入
boolean write = checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
boolean read = checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
Log.e(TAG, "aaaa WRITE=" + write + ", READ=" + read);
File dir = Environment.getExternalStorageDirectory();
Log.e(TAG, "aaaa DIR=" + dir);
Log.e(TAG, "aaaa canRead=" + dir.canRead() + " canWrite=" + dir.canWrite() + " canExecute=" + dir.canExecute());
打印:
2021-06-12 12:30:07.256 3196-3196/ aaaa WRITE=true, READ=true
2021-06-12 12:30:07.257 3196-3196/ aaaa DIR=/storage/emulated/0
2021-06-12 12:30:07.260 3196-3196/ aaaa canRead=false canWrite=false canExecute=true
API 29已弃用此功能,认为这是对用户隐私的改进,因此返回的路径对于以API 29或更高版本为目标的应用程序将无法直接访问。
以下是备选方案文档的链接https://developer.android.com/reference/android/os/Environment#getExternalStorageDirectory((
将requestLegacyExternalStorage
添加到清单文件:
<application
...
android:requestLegacyExternalStorage="true"
...>