Я пытаюсь ввести SAF в моем приложении для Android.
Кажется, что Uris от многих методов SAF в закодированном виде, с такими символами, как: или / заменены% 3A и% 2F, дляпример.
В моем приложении я декодирую Uris, поэтому они имеют следующую форму:
content: //com.android.providers.downloads.documents/tree/raw: / storage / emulated /0 / Загрузить / foldername
для их хранения.
Возможно, это неправильно. Поэтому я спрашиваю, обманываются ли методы SAF при передаче uri, которые анализируются из строк в форме, которую мое приложение архивирует, то есть с реальными символами, такими как: и /
Метод, подобный этому:
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 / Скачать / имя_фолдера
oldParentUri ="content: //com.android.providers.downloads.documents/tree/raw: / storage / emulated / 0 / Download / foldername"
id = "raw:" *
parentFolderUri =содержание: //com.android.providers.downloads.documents/tree/raw%3A/document/raw%3A/children