【发布时间】:2020-01-28 13:15:11
【问题描述】:
我的应用必须将文件从私有应用文件夹复制到具有适当权限的 SAF 文件夹。
使用的代码是:
static boolean copyFileToTargetFolderWithNewName(Activity activity, String docUri,String targetFolderUri,String newName)
{
deleteIfExisting(activity,Uri.parse(targetFolderUri),newName);
File newFile = new File(docUri);
Uri contentUri = FileProvider.getUriForFile(activity, "com.myappname.fileprovider", newFile);
ContentResolver resolver = activity.getContentResolver();
boolean result=false;
Log.d("copy",contentUri+" "+targetFolderUri+" "+newName);
try {
//error here
Uri newUri=DocumentsContract.copyDocument(resolver,contentUri,Uri.parse(targetFolderUri));
DocumentsContract.renameDocument(resolver,newUri,newName);
result=true;
} catch (FileNotFoundException e) {
result=false;
}
return result;
}
日志输出产生:
D/copy: content://com.myappname.fileprovider/external_files/Android/data/com.myappname.app/files/subfolder/file.txt
content://com.android.providers.downloads.documents/tree/raw%3A%2Fstorage%2Femulated%2F0%2FDownload%2FSAFfolder/子文件夹
新名称.txt
怎么了? 这是标志问题吗?这两个域不兼容复制吗?
【问题讨论】:
标签: android nullpointerexception file-copying android-fileprovider storage-access-framework