Android Q访问外部文件夹
所以我的一些安卓10用户出现了问题,他们无法保存或访问设备上存储的数据,我发现这是因为安卓10现在说我们只能访问应用程序本身创建的数据,并且只能访问本地文件夹中的数据Android Q访问外部文件夹,android,android-sqlite,android-external-storage,android-10.0,Android,Android Sqlite,Android External Storage,Android 10.0,所以我的一些安卓10用户出现了问题,他们无法保存或访问设备上存储的数据,我发现这是因为安卓10现在说我们只能访问应用程序本身创建的数据,并且只能访问本地文件夹中的数据 因此,我将代码从Environment.getExternalStorageDirectory()更改为getExternalFilesDir(null),并让他们在设备上手动移动文件,除一项功能外,所有功能都恢复正常工作。我允许他们将应用程序上的sqlite数据库中的数据导出到CSV,如何使其在Android 10的下载文件夹中
因此,我将代码从
Environment.getExternalStorageDirectory()
更改为getExternalFilesDir(null)
,并让他们在设备上手动移动文件,除一项功能外,所有功能都恢复正常工作。我允许他们将应用程序上的sqlite数据库中的数据导出到CSV,如何使其在Android 10的下载文件夹中仍然可以访问,而不必将其存储在我的应用程序目录文件夹中?您需要使用SAF framework:
Intent i = new Intent(Intent.ACTION_CREATE_DOCUMENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("text/csv");
String filename = "test.csv";
i.putExtra(Intent.EXTRA_TITLE, filename);
startActivityForResult(i, 100);
然后在onActivityResult中:
Uri uri = data.getData();
OutputStream os = getContentResolver().openOutputStream(uri);
//write your file here
为什么不使用
ACTION\u CREATE\u DOCUMENT
并让用户选择导出数据的位置?