我正在尝试在我的Android应用程序中引入SAF。
似乎来自许多SAF方法的uris都是编码形式的,例如:或/之类的字符被%3A和%2F替换。
在我的应用程序中,我对uris进行了解码,因此它们具有以下形式:
content://com.android.providers.downloads.documents/tree/raw:/storage/emulated/0/Download/foldername
来存储它们。
也许这是错误的。因此,我问SAF方法在传递uri时是否被欺骗了,这些uri是从我的应用程序存档形式的字符串中解析出来的,也就是说,使用诸如:和/这样的真实字符。
如下所示的方法:
static public DocumentFile createFolderInFolder(Activity activity,String parentFolderUriStringParam,String folderName)
{
DocumentFile result=null;
String parentFolderUriString=Uri.decode(parentFolderUriStringParam);
ContentResolver contentResolver;
contentResolver = activity.getContentResolver();
Uri parentFolderUri=null;
Uri oldParentUri = Uri.parse(parentFolderUriString);
String id = DocumentsContract.getTreeDocumentId(oldParentUri );
parentFolderUri= DocumentsContract.buildChildDocumentsUriUsingTree(oldParentUri , id);
DocumentFile parentFolder = DocumentFile.fromTreeUri(activity, parentFolderUri);
result=parentFolder.createDirectory(folderName);
return result;
}它有
parentFolderUriStringParam=content://com.android.providers.downloads.documents/tree/raw:/storage/emulated/0/Download/foldername
oldParentUri="content://com.android.providers.downloads.documents/tree/raw:/storage/emulated/0/Download/foldername“
id="raw:“
parentFolderUri=content://com.android.providers.downloads.documents/tree/raw%3A/document/raw%3A/children
发布于 2019-09-30 23:44:42
不应更改已获取的uri字符串。按原样保存它们。按原样使用它们。
仅在onActivityResult中保存data.getData().toString()。
https://stackoverflow.com/questions/58170437
复制相似问题