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