这是我的代码:
try
{
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
String es= System.getenv("EXTERNAL_STORAGE");
if (sd.canWrite())
{
String currentDBPath = "/data/com.my.package/databases/my.db";
String backupDBPath = "my_db_backup.db3";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(es, backupDBPath);
if (currentDB.exists()) {
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
}
Toast.makeText(getBaseContext(), backupDB.toString(), Toast.LENGTH_LONG).show();
}
}
catch (Exception e) {
Log.e("APP ERROR", "APP DB Backup", e);
}
全部成功执行。EXTERNAL_STORAGE 路径是: storage/emulated/legacy 。但是当我使用 DDMS 时,EXTERNAL_STORAGE 路径在那里,但没有文件存在。我有一个HTC One...
更新:2013 年 11 月 1 日我尝试了以下所有建议,但就像我的代码一样,没有抛出任何错误,这让我相信它的手机只是默默地不允许我将任何内容复制到我的 SD 卡。我有一部 HTC 手机……在执行“将 db 复制到 sd 卡”代码之前,我需要对手机进行任何设置或程序吗?