Android Q访问外部文件夹

时间:2019-11-06 15:33:44

标签: android android-sqlite android-external-storage android-10.0

所以我的几个Android 10用户遇到问题,他们无法在他们的设备上保存或访问存储的数据,我发现这是因为Android 10现在说我们只能访问那些应用程序本身创建并且仅在本地文件夹中?

因此,我经历了将代码从Environment.getExternalStorageDirectory()更改为getExternalFilesDir(null)的过程,并让他们手动将文件移到设备上,除一项功能外,其他所有功能均恢复正常。我允许他们将应用程序上的sqlite数据库中的数据导出到CSV,我如何做到这一点,以便仍然可以在Android 10的下载文件夹中访问此数据,而不必将其存储在我的应用程序目录文件夹中?

1 个答案:

答案 0 :(得分:0)

您需要使用SAF框架:

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