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