Android以编程方式从sdcard将sqlite数据库传输到USB闪存盘

时间:2015-01-24 21:47:59

标签: android sqlite usb

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

以下是使用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数据库。那可能吗?我该怎么办?

1 个答案:

答案 0 :(得分:1)

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

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