无法在android上复制数据库

qvsjd97n  于 2021-06-30  发布在  Java
关注(0)|答案(0)|浏览(264)

我有在androidmanifest上读写的权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

... 因为我想复制一个文件。我将分两步执行此过程:

1. 启动intent,以便用户在需要的位置创建文件:

此代码主要是android开发人员站点的示例。

private void createFile() {
        Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        intent.setType("application/vnd.sqlite3");
        intent.putExtra(Intent.EXTRA_TITLE, "test.db");

        startActivityForResult(intent, CREATE_FILE);
    }

2. 复制文件。

intent返回一个uri,因此在 onActivityResult :

try {
    destinationOutputStream = getContentResolver().openOutputStream(data.getData());
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

(其中 data 是意图),我可以得到输出流。
最后,根据文档,我应该能够复制文件:

try {
    Long totalBytes = Files.copy(originalPath, destinationOutputStream);
} catch (IOException e) {
    e.printStackTrace();
}

(其中 originalPath 是存储原始文件的路径(路径类型)。
但是,在运行时,我得到以下错误:

java.lang.IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period of time.

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题