0
我有一个应用程序,使SQLite数据库。我无法导出该数据库。我只是试图将它导出到电话上的文件中。我的最终目标是能够通过电子邮件发送该文件,然后能够使用该应用导入该文件。但那个问题是另一天。从Android应用程序导出数据库文件的问题
当我按下导出按钮并检查电话进行数据库备份后,即使进行搜索,我也找不到该文件。
我很新,但尚未保存文件,所以我想看看我是否做了明显不正确的方法。到目前为止,我所经历的教程并没有帮助我指出错误。
这里是我导出数据库的方法:
private void exportDB() {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
FileChannel source=null;
FileChannel destination=null;
String currentDBPath = "/data/"+ "com.example.jeremy.sqlwine" +"/databases/"+ "wines.db";
String backupDBPath = "wines.db";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);
try {
source = new FileInputStream(currentDB).getChannel();
destination = new FileOutputStream(backupDB).getChannel();
destination.transferFrom(source, 0, source.size());
source.close();
destination.close();
Toast.makeText(this, "DB Exported!", Toast.LENGTH_LONG).show();
} catch(IOException e) {
e.printStackTrace();
}
}
我还添加了权限清单:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
编辑:这里是结束了修复它。
我能够得到这个,因为用户Hamed Nabizadeh通过一段时间的聊天帮助我。
他帮助排查并发现我错过了java代码中的权限请求。我只需将此代码添加到MainActivity并开始工作。
if (ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
} else {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
1);
}
}
中的 “背景”, “新的文件(context.getDatabasePath(” wines.db “))” 是红“(Environment.getExternalStorageDirectory());”带下划线并且表示“无法解析构造函数'File(java.io.File)” – andrdoiddev
@andrdoiddev如果您从活动调用方法,不需要t o调用上下文 –
@andrdoiddev我编辑了我的答案并检查了它 –