问题标签 [saf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1079 浏览

android - StorageAccessFramework 和 DownloadManager 的问题

我有一个问题。我正在开发一些流媒体/视频下载应用程序。我正在使用DownloadManager进行视频下载。

请求是提供用户选择的保存目的地(SDCard 或内部手机存储)。

我在使用SAF和 DownloadManager 的 Lollipop 上遇到问题。

我向用户提供选择目录来存储我下载的文件:

在 onActivityResult 我通过

现在,我需要将此目的地设置为 DownloadManager.Request 的目的地

在我选择“下载/视频”目录后,执行

我正进入(状态

如果我尝试将一些文件写入选定的位置,它会起作用。

有什么建议么?

0 投票
1 回答
600 浏览

android - 使用 Onedrive 和 StorageAccessFramework 在 Android 上写入文件

我在带有 OneDrive 的 Android 上使用存储访问框架 (SAF)。读取文件工作正常,但是当我尝试保存文件时,它不起作用(我收到“错误文件号”问题)

以同样的方式将 SAF 与 GoogleDrive 一起使用非常有效。

这是因为 SAF 的 OneDrive 实现不支持写入文件,还是类似的东西?

非常感谢

0 投票
1 回答
257 浏览

android - 如何使用 SAF 在服务器(文件云)上更新文件?

我的移动云应用程序从远程服务器获取所有内容,它应该使用存储访问框架http://developer.android.com/guide/topics/providers/document-provider.html并实现 DocumentsProvider http://developer.android .com/reference/android/provider/DocumentsProvider.html将显示在第三方应用程序(如 Microsoft Office)中支持 SAF 打开或保存的应用程序列表中。从 SAF 应用程序打开文件并在第三方应用程序(例如 Microsoft Office)中对其进行修改后,该文件应在服务器上被覆盖,但我在 SAF 框架中找不到相应的方法。

现在我看到了实现这一点的唯一方法:


  1. 在DocumentsProvider.openDocument()上的 app 文件夹或 sdcard 中的临时位置下载文件
  2. 设置这个文件的文件观察者(FileObserver)
  3. 捕获 CLOSE_WRITE 事件并尝试将此修改后的文件发送到服务器
  4. 如果出现任何网络错误或应用程序已重新启动 - 将有关此文件的信息存储在应用程序数据库中,以便稍后发送此文件。

你能提供更简单的方法来达到预期的结果吗?或者,也许您在我的方法中看到了一些错误。类似的功能已经在 Dropbox 应用中实现。谢谢!

0 投票
0 回答
528 浏览

android - KitKat之后如何在二级存储SDCARD版本中创建/删除文件?

知道在 KitKat 之后的二级存储 SDCARD OS 版本中创建和删除对 SAF(存储访问框架)的更改的权限。

在 manifests 下,已经设置了权限,

KitKat 之后的版本 通过使用 new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE) 将选择二级存储 SDCARD 路由,将 DocumentUri 设置为 takePersistableUriPermission()

例如,KitKat 之前的版本。

可以成功删除。

KitKat 之后的版本,delete() 获得写入权限错误,

使用 deleteDocument() not found 表明已记录且无法删除。

这个问题有什么解决方案吗?有什么方法可以找到/更改一般调解或归档的文件?

0 投票
1 回答
335 浏览

android - android 4.4 SAF 将文件写入 SD

如您所知,我想将文本文件保存到通过otg线连接的闪存盘中。在Adnroid4.4(API19)上,它可以创建目录吗?我知道如何保存文件,但必须单击保存按钮。我有一个文件列表必须保存并保存到不同的文件夹。那么android4.4可以实现这一点吗?我不想总是点击保存按钮。我可以通过uri直接将文件保存到闪存盘吗?

在此处输入图像描述

0 投票
2 回答
113 浏览

android - 不知道为什么会出现“NullPointerException”

我正在尝试在 android 终端上使用 SAF 写入 SD 卡。在我的代码中,在 SD 卡上创建文件后,我检查了文件的状态,但当时一些用户发生了“NullPointerException”。尽管刚刚创建文件,但我在不知道为什么它为空的情况下苦苦挣扎。

  1. 这是这样,但现在遵循一个代码块
  2. “if(newFile.canWrite()){”发生错误。:

    /li>
0 投票
1 回答
670 浏览

android - 存储访问框架:撤销树权限后保留文件权限

在应用程序中,用户使用ACTION_OPEN_DOCUMENT_TREEIntent 通过 SAF 选择一个目录,并且用户可以在其中创建各种文件。问题是当用户更改工作目录(始终使用 SAF)时,对这些文件的访问权限将丢失。如何保持访问喜欢ACTION_CREATE_DOCUMENTor ACTION_OPEN_DOCUMENT

这是我的代码

  • 选择目录
  • 处理结果
  • 创建文件
  • 现在如果用户更改工作目录,我会释放旧目录的权限,所以:

一旦我重新启动应用程序并尝试打开在旧目录中创建的文件,我得到: java.lang.SecurityException: No persistable permission grants found for UID <<<uid>>> and Uri 0 @ <<<file uri>>>

例子:

如何处理?或者只是保留目录权限,直到应用程序被卸载???

0 投票
3 回答
2721 浏览

android - 如何在 Android Q 中为 Not-Owned 文件请求文件删除

在 Android Q 中,不是默认文件管理器或图库的应用程序只能修改和/或删除他们拥有的图像文件,因此,这些图像文件是应用程序创建的。

授予读/写权限不允许修改或删除任何不属于应用程序的文件。

这意味着不仅其他应用程序创建的文件无法访问,而且如果一个应用程序被卸载然后重新安装,那么这个应用程序将失去对该应用程序先前创建的所有公共文件的所有权。因此,重新安装后它不能再修改或删除它们。

当想要修改 1 个图像文件或删除大量多个图像文件时,这些文件以前属于某个应用程序,但由于重新安装而失去了所有权,那么实现此类操作(删除或修改)的程序是什么?

最好的解决方案是不使用 SAF 文件选择器,以避免请求用户通过 SAF 选择和授予位置。

而如果唯一的解决方案是使用SAF文件选择器,那么如何触发直接提示删除一组已知的特定文件而不请求树访问,也不必告诉用户浏览、搜索和自己做呢?

0 投票
2 回答
3682 浏览

android - 如何列出android 10上的所有pdf文件?

由于更改与访问共享存储的授权有关,因此似乎不再可能通过这种方法搜索 pdf 类型的所有文档(使用 requestLegacyExternalStorage = "false"):

检查此链接:媒体数据限制

我看到的唯一解决方案是使用 SAF 以递归方式扫描共享存储的所有树,这在我看来资源非常昂贵且荒谬。

有人有其他想法吗?

0 投票
1 回答
625 浏览

android - Android(Xamarin)通过存储访问框架 Uri 导航文件夹树

尝试使用存储访问框架和 Uri 导航文件夹树时,我似乎出现了一些意外行为。简而言之,我的测试用例是往返 DocumentFile -> Uri -> DocumentFile -> Uri 测试。(代码适用于 Xamarin,但这些是底层 Android 类,因此它不应该是特定于语言的。)

问题1:我的期望在这里吗?我不应该期望能够使用 Uri 导航 SAF 文件夹树吗?

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