Пытаясь перемещаться по дереву папок с помощью Storage Access Framework и Uri, я вижу некоторое неожиданное поведение. Короче говоря, мой тестовый пример представляет собой двусторонний тест DocumentFile -> Uri -> DocumentFile -> Uri test. (код для Xamarin, но это базовые классы Android, поэтому он не должен быть языковым спецификацией c.)
void Test(DocumentFile folder)
{
var uri = folder.Uri;
//
// Test case is using an SD card mounted in a card trader in a USB hub.
// uri: {content://com.android.externalstorage.documents/tree/1111-1111%3ADCIM/document/1111-1111%3ADCIM%2F110ND810}
//
var folder2 = DocumentFile.FromTreeUri(context, uri);
var uri2 = folder2.Uri;
//
// uri2: {content://com.android.externalstorage.documents/tree/1111-1111%3ADCIM/document/1111-1111%3ADCIM}
//
// At this point I expected uri2 to be equal to uri, but it's not.
// Instead, uri2 points to the parent of uri
//
}
Вопрос 1: Мои ожидания здесь? Не следует ли ожидать возможности навигации по дереву папок SAF с помощью Uri?
Вопрос 2: Если да, то каков подходящий обходной путь?