【问题标题】:Android (Xamarin) navigating folder tree through Storage Access Framework UriAndroid(Xamarin)通过存储访问框架 Uri 导航文件夹树
【发布时间】:2026-01-31 05:50:01
【问题描述】:

尝试使用存储访问框架和 Uri 导航文件夹树时,我似乎出现了一些意外行为。简而言之,我的测试用例是往返 DocumentFile -> Uri -> DocumentFile -> Uri 测试。 (代码适用于 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:我的期望落空了吗?我不应该期望能够使用 Uri 导航 SAF 文件夹树吗?

问题 2:如果是这样,什么是合适的解决方法?

【问题讨论】:

标签: android xamarin uri storage-access-framework saf


【解决方案1】:

以下库使使用 SAF 变得如此简单。我认为你不应该得到两个不同的 uri!

https://github.com/madnik7/PortableStorage

【讨论】: