Android 以编程方式将 sqlite 数据库从 sd 卡传输到 USB 闪存驱动器

Android transfer sqlite database to USB flash drive from sdcard programatically

我有一个定制的 Android 设备,它是带有显示单元的单板计算机。它安装了 Android 4.1 并有一个 USB 端口。在一个应用程序中,我创建了一个 sqlite 数据库。我想使用上述 USB 端口将数据库传输到 USB 闪存驱动器。我对 Android 文档的理解足以在 USB 主机和附件之间建立连接。我可以使用 intent 过滤器检测我的闪存驱动器。

以下是使用 USB 类 传输字节数组的代码片段。

     private Byte[] bytes
     private static int TIMEOUT = 0;
     private boolean forceClaim = true;

     ...

     UsbInterface intf = device.getInterface(0);
     UsbEndpoint endpoint = intf.getEndpoint(0);
     UsbDeviceConnection connection = mUsbManager.openDevice(device); 
     connection.claimInterface(intf, forceClaim);
     connection.bulkTransfer(endpoint, bytes, bytes.length, TIMEOUT); 

这里使用USB接口传输一个bytearray。我希望能够使用相同的方式传输 sqlite 数据库。那可能吗?我该怎么做?

正如此处其他几个问题中所述,Android API 仅支持原始传输,因此您必须在您的应用中实现整个文件系统。

由于您的设备是自定义的,您最好创建一个 Linux 级别的守护程序或(防弹!)setuid 工具来在操作系统级别安装 USB 驱动器,并利用已经存在的文件系统代码在 Lunux 内核中。然后你可以简单地对其进行正常的文件操作。您甚至可以修改 Android 的 vold 来执行此操作 - 因为您控制 Android 安装,所以您有这个 class 的选项,典型的第 3 方开发人员针对锁定的手机没有。