嗨
我遇到问题,我尝试将文件保存到自定义目录,但不起作用。
首先,我选择了downloads目录,但是该副本无效。
如果我添加一个constans目录文件夹,则进行下载,该副本正在运行。
问题在于,两个目录路径不存在。
如果我添加一个康斯坦斯路径,例如:
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
路径为:/storage/emulated/0/Download
但是,如果我从意图中添加了一个自定义路径,并且选择了downloads目录,则该路径为:com.android.providers.downloads.documents/tree/downloads
我复制文件的功能:
database.close();
File sourceDb = context.getDatabasePath("app_database");
File destinationDb = new File(filePath + "/app_database");
File file=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
try {
FileUtils.copyFile(sourceDb, destinationDb);
} catch (Exception e) {
return "Error";
}
我的意图:
Intent i = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
i.addCategory(Intent.CATEGORY_DEFAULT);
startActivityForResult(Intent.createChooser(i, "Choose directory"), 100);
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==100){
informationSnackbar(data.getData().toString());
...
}
答案 0 :(得分:0)
ACTION_OPEN_DOCUMENT
不返回File
。它返回指向Uri
的{{1}}。
要写入由DocumentsProvider
标识的文档,请使用Uri
和ContentResolver
获得openOutputStream()
,您可以将数据库复制到其中。