【发布时间】:2020-08-21 02:02:12
【问题描述】:
我正在开发一个照片编辑器应用程序,在该应用程序中编辑我的图片后,我将其保存到我的本地存储中。它在 android 9 之前工作正常,但在 android 10 上没有。它在 Android 10 中显示“没有找到这样的文件或目录”的异常。经过一些研究,我发现 getExternalFilesDir() 在 android Q+ 中已被弃用。但我在 android 10 中找不到任何合适的方法。所以如果有人可以提供教程,那将非常有帮助。
我已经添加并授予了 uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 以防万一,但它没有解决任何问题。
这是我的尝试(使用 ParcelFileDescriptor):
private void fileAccessForAndroidQ(Uri fileUri){
try {
ParcelFileDescriptor parcelFileDescriptor = this.getContentResolver().openFileDescriptor(fileUri, "r", null);
InputStream inputStream = new FileInputStream(parcelFileDescriptor.getFileDescriptor());
Cursor returnCursor =
getContentResolver().query(fileUri, null, null, null, null);
int nameIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
returnCursor.moveToFirst();
fileName = returnCursor.getString(nameIndex);
file = new File(this.getFilesDir(), fileName);
OutputStream outputStream = new FileOutputStream(file);
IOUtils.copyStream(inputStream, outputStream);
}catch (Exception e){
Toast.makeText(this, ""+e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
我们将不胜感激。
【问题讨论】:
-
Android 10 需要使用 MediaStore API。Android 10 之后,您无法直接访问 Storage。检查此以获取更多信息:developer.android.com/training/data-storage
标签: android file fileoutputstream android-external-storage android-10.0