我有在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.
暂无答案!
目前还没有任何答案,快来回答吧!