Android (Xamarin) перемещение по дереву папок через URI Storage Access Framework
Пытаясь перемещаться по дереву папок с помощью Storage Access Framework и Uri, я наблюдаю неожиданное поведение. Короче говоря, мой тестовый пример - это двусторонний DocumentFile -> Uri -> DocumentFile -> Uri test. (код предназначен для Xamarin, но это базовые классы Android, поэтому он не должен зависеть от языка.)
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: Если да, то какой способ решения проблемы?
1 ответ
Следующая библиотека упрощает работу с SAF. Я думаю, вам не следует получать два разных ури!