我正在尝试在我的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
答案 0 :(得分:0)
您不应更改获取的uri字符串。将它们保存为。照原样使用它们。
仅将data.getData()。toString()保存在onActivityResult中。