我有一个定制的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数据库。那可能吗?我该怎么办?
答案 0 :(得分:1)
正如此处的其他几个问题所述,Android API仅支持原始传输,因此您必须在应用中实现整个文件系统。
由于您的设备是自定义的,因此最好创建一个Linux级别的守护程序或(防弹!)setuid工具,以便在操作系统级别安装USB驱动器,并利用Lunux内核中已存在的文件系统代码。然后您可以简单地对它执行正常的文件操作。您甚至可以修改Android的vold来执行此操作 - 因为您控制Android安装,您有这类选项,典型的第三方开发人员定位锁定手机不会。