SAF方法似乎将SAF解码后的Uris与编码后的Uris视为不同

时间:2019-09-30 14:54:31

标签: android subdirectory storage-access-framework documentfile

我正在尝试在我的Android应用中引入SAF。

许多SAF方法中的uri似乎都是编码形式,例如:或/等字符被%3A和%2F代替。

在我的应用中,我正在解码uri,因此它们具有以下形式:

content://com.android.providers.downloads.documents/tree/raw:/ storage / emulated / 0 / Download / foldername

存储它们。

也许是错误的。因此,我问在传递URI时是否会欺骗SAF方法,这些方法是从字符串以我的应用程序将它们解析的形式解析出来的,即使用诸如:和/

之类的真实字符

这样的方法:

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 =“原始:”

parentFolderUri = content://com.android.providers.downloads.documents/tree/raw%3A/document/raw%3A/children

1 个答案:

答案 0 :(得分:0)

您不应更改获取的uri字符串。将它们保存为。照原样使用它们。

仅将data.getData()。toString()保存在onActivityResult中。