我正在尝试在我的 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