问题标签 [removable-storage]
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.
android - StorageActionFramework ACTION_OPEN_DOCUMENT 可以请求单个文件吗?
有没有办法使用 StorageActionFramework ACTION_OPEN_DOCUMENT 意图来请求特定文件的信息?更具体地说,我有一个从 MediaStore 获得的特定文件的 URI。我想知道它是否有写权限,如果有,删除它。此外,我想在没有任何 UI 的情况下执行此操作(在此特定上下文中不需要)。
例如,文档说明了如何使用intent.addCategory (Intent.CATEGORY_OPENABLE)
. 并将其限制为某种类型的文件,intent.setType ("image/*")
例如。但我没有看到任何将其限制为特定文件的内容。
此外,我意识到一旦您从 StorageActionFramework 收到一组文件,您就可以查看各个文件的属性。
看来,如果我可以使用 ACTION_OPEN_DOCUMENT 来获取 SAF 的 URI,我就可以使用DocumentsContract.deleteDocument()
它来删除它。
更多背景
在我的情况下,用户从我的应用程序中调用了相机应用程序并拍摄了一张或多张照片。然后我的代码查询 MediaStore 以确定新图像的文件名。然后我希望将文件移动到特定于我的应用程序的目录中。这适用于位于“内部”和“外部”存储中的文件,但不适用于可移动存储。
从长远来看,这种解决方案是不够的,因为很明显它将用于大量永久存储(尽管存储大小增加的快节奏缓解了这种情况)。但是,我的应用程序确实需要控制通过应用程序获取的图像文件,因此,将它们留在可移动存储上可能会破坏应用程序。
另一个复杂的因素是缺乏用于拍摄多张照片并将它们保存到指定位置的 Android API。有这样一个用于拍摄单张照片的 API,但这不适用于我的应用程序。因此,我只能让相机应用程序将其文件保存在它想要的位置,然后再移动它们。
其他一些应用程序只是制作照片副本并将副本存储在私人目录中。我可以这样做,但这会进一步加剧存储问题。长期的解决方案可能是将云存储与本地私有缓存结合使用。
c# - 无法将类型 Windows.Devices.Enumeration.DeviceWatcher 隐式转换为 DeviceWatcher
我正在构建一个 IoT 应用程序,该应用程序需要检测何时插入和移除了可移动设备。尝试创建 DeviceWatcher 对象时出现以下错误。
该DeviceWatcher.CreateWatcher()
方法是 type DeviceWatcher
。为什么我会收到此错误?
我不确定问题是什么,也不知道如何解决。任何人都可以在这里提供见解吗?
错误:
无法将类型“Windows.Devices.Enumeration.DeviceWatcher”隐式转换为“NamespaceName.DeviceWatcher”
申请类型:
Windows 10 后台应用程序。周年纪念版。
清单能力:
移动存储
android - 检查 uri 是否来自可移动存储
如何检查从 action_open_document 树中选择的 Uri 用户是否来自可移动 SD 卡?我检查了这个,但它对于主 SD 卡和可移动 SD 卡是一样的!还有其他方法吗?
opencl - 如何在不同设备上生成并行线程?
我想在我的 CPU(localhost
主机)上运行一些线程,在连接的便携式设备(如 USB)上运行其他一些线程。
我知道 OpenCL 支持并行化,但是如何使用 OpenCL 将作品分发到便携式设备上?
除了 OpenCL 之外的任何其他想法也会有所帮助。
android - Browsing a removable USB OTG on Android N, is Storage Access Framework really the only way?
We have a custom android device that is running Nougat and is wrapped in a vendor specific launcher. I am trying to implement a File Manager for the said device with the use of API 23. This is because I've read that the only way to do it starting from Android M is with SAF.
The device I am developing on has 3 USB ports to which when a USB drive is connected the app would detect and transfer custom files from the USB to the device's Internal Storage (the device has no SD Card). Since direct access to mountable storage is a no-go on Android N I was thinking of doing this with SAF.
I have implemented broadcast receivers for USB Detach and Attach through the USB Manager and USB Host and can successfully detect when a USB is plugged in or not in a vain attempt to communicate with the device and try to extract the files. But I've also read that the Android USB Framework is only for sending small bytes for communicating with a USB connected device such as an Arduino board and what not.
I am now trying to implement a USB Document Provider to browse the USB. Since I cannot directly access the files according to this post.
I am following this source code to implement my USB Document Provider.
I'm currently implementing the queryRoots and queryChildDocuments part of the class. Most of the fields for the Cursor I understand what to put but the part for the COLUMN_DOCUMENT_ID stumbles me (for both methods).
Since the device is a removable USB I don't know what to put as a value for the column
Here is my queryRoots method implementation:
Please correct me if I'm wrong but since the files I want to export are not your typical mime type files, I have set the COLUMN_MIME_TYPES to
And my queryChildDocuments method:
Apart from that, there is nothing else special to my implementation.
I then made an intent to open the documents provider through a navigation menu with this code:
The custom document provider is shown on the list but the USB drive is not listed. Apart from that when I click on the document provider to open from my specified root it returns nothing. What am I doing wrong?
c++ - Windows 中的应用程序当前正在使用弹出闪存盘
我正在尝试从 c++ 程序中找到一种方法来(删除、释放、清除等)用于从外部硬盘驱动器(闪存盘)打开文件并导致闪存盘不可用的目录路径能够以 Windows 中的经典错误弹出(应用程序正在使用它)
问题是,当您通过 c++ 程序打开一个文件并且该文件位于外部硬盘驱动器上时,即使您关闭该文件,它也无法弹出外部驱动器,直到您关闭打开该文件的程序或路径那个外部驱动器。
每次在 Windows 中使用文件功能后,我都尝试使用SetCurrentDirectory()
它,但它似乎无法正常工作。
它仍然需要程序释放一些东西,以便可以弹出外部磁盘。
有没有人找到办法做到这一点?
-------------- UDPATE
迈克尔沃尔兹是正确的。查找关闭();在某些情况下 CloseHandle(); 据我测试,对于其他情况,现在似乎工作正常。
c# - 添加并准备好 UWP C# 可移动驱动器
我正在开发一个 UWP C# 应用程序女巫使用设备检测 (PortableStorageDevice)。我正在使用来自官方示例(场景 2)的代码,创建一个 DeviceWatcher 并订阅事件添加、更新和删除。
它有效,但有一个问题我不知道如何解决,我需要它与电子阅读器和智能手机等设备一起使用。当我连接电子阅读器时,会触发已添加事件,但在设备中会出现一个对话框,要求用户连接计算机以使用存储。
当用户接受对话框时,可移动驱动器会出现在我的电脑上(当时已连接),但是当这种情况发生时,我的 UWP 应用程序中不会触发任何事件,我不知道驱动器是否真的连接。因为用户可能在一小时后接受此对话框或拒绝它。
当可移动驱动器真正连接(读取文件)时,我怎样才能得到通知?
我正在使用这段代码:
uwp - UWP 应用程序 - 如何在 StorageDevices 中检测 CDRom 或 DVDRom 设备
在 UWP 应用程序中,我通过以下方式获取所有可移动设备:
我想排除光学设备,只保留外部硬盘或闪存设备。
我尝试使用以下方法找到合适的属性:
并从这里尝试了很多属性,但无法找到任何东西。
有人有想法吗?