为什么不匹配路径?
Why don't match the path?
嗨
我有问题,我尝试将文件保存到自定义目录,但不起作用。
首先我选择了下载目录,但是复制不起作用。
如果我添加一个 constans 目录文件夹,下载、复制工作正常。
问题是,这两个目录路径不存在。
如果我添加一个常量路径,例如:
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
路径是:/storage/emulated/0/Download
但是如果我从 intent 添加自定义路径,并选择下载目录,则路径为: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());
...
}
ACTION_OPEN_DOCUMENT
不 return 一个 File
。它 return 是一个 Uri
指向一个 DocumentsProvider
.
要写入由 Uri
标识的文档,请使用 ContentResolver
和 openOutputStream()
获取可以将数据库复制到的 OutputStream
。
嗨
我有问题,我尝试将文件保存到自定义目录,但不起作用。
首先我选择了下载目录,但是复制不起作用。
如果我添加一个 constans 目录文件夹,下载、复制工作正常。
问题是,这两个目录路径不存在。
如果我添加一个常量路径,例如:
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
路径是:/storage/emulated/0/Download
但是如果我从 intent 添加自定义路径,并选择下载目录,则路径为: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());
...
}
ACTION_OPEN_DOCUMENT
不 return 一个 File
。它 return 是一个 Uri
指向一个 DocumentsProvider
.
要写入由 Uri
标识的文档,请使用 ContentResolver
和 openOutputStream()
获取可以将数据库复制到的 OutputStream
。