0

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

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

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

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

4

1 回答 1

0

您不应更改获得的 uri 字符串。按原样保存它们。按原样使用它们。

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

于 2019-09-30T15:44:42.027 回答