因此,我遇到了一些Android 10用户的问题,他们无法在他们的设备上保存或访问存储的数据,我发现这是因为Android 10现在说我们只能访问应用程序本身的数据创建并且仅在本地文件夹中?
因此,我经历了将代码从Environment.getExternalStorageDirectory()
更改为getExternalFilesDir(null)
的过程,并让他们手动将文件移到其设备上,除一项功能外,其他所有功能均恢复正常。我允许他们将应用程序上的sqlite数据库中的数据导出到CSV,我如何做到这一点,因此仍然可以在Android 10的下载文件夹中访问此数据,而不必将其存储在我的apps目录文件夹中?
最佳答案
您需要使用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