将数据库数据从一个Android设备传输到另一个

时间:2014-01-09 14:09:32

标签: android sqlite bluetooth

我有一个应用程序,需要实现'share'选项,将设备本地数据库中包含的数据传输到另一个设备,该设备可以获取此数据并将其插入设备数据库中的相应表中。

我通过蓝牙进行通信,我只是在寻找一种传输这些数据的好方法。是否有一种简单的方法可以在设备A上执行sqlite转储,使用蓝牙将其传输到设备B,并让设备B重新插入此数据?

1 个答案:

答案 0 :(得分:1)

实现ContentProvider是利用Android框架对数据库进行CRUD操作的方法。

一种好方法可能是将一行转换为Json并在接收端解包该字符串以插入它。这种方式更易测试,在发送过程中更容易从错误中恢复,但可能会非常慢,具体取决于数据的大小。为了加快速度,我会分批发送多行,并测试哪种批量大小最适合速度和可靠性。

快速的方法可能是将数据转储到平面文件,然后使用FileProvider提供对该文件的访问权限,并尝试使用here

中的以下内容
    public void sendFile(Uri uri, BluetoothSocket bs) throws IOException {
            BufferedInputStream bis = new BufferedInputStream(getContentResolver().openInputStream(uri));
            OutputStream os = bs.getOutputStream();
        try {
            int bufferSize = 1024;
        byte[] buffer = new byte[bufferSize];

        // we need to know how may bytes were read to write them to the byteBuffer
        int len = 0;
        while ((len = bis.read(buffer)) != -1) {
            os.write(buffer, 0, len);
        }
    } finally {
        bis.close();
        os.flush();
        os.close();
        bs.close();
    }
}