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