【发布时间】:2011-11-20 15:38:36
【问题描述】:
我对 apk 开发还很陌生。到目前为止,在购买了一本书并进行了大量的谷歌搜索之后,我已经成功地制作了一个应用程序来控制我的自定义 ROM 的一些功能。我目前正在尝试实现 2 个备份功能。我想将 /data/system/batterystats.bin 备份到 /sdcard,并且我想将我的 touchwiz 启动器的 launcher.db 备份到 /sdcard。
对于第一部分,我实际上还没有找到任何东西。我已经搜索了很多关于如何恢复文件的内容,但没有找到太多内容。它主要是关于 SQL .db 文件。我还寻找通过 apk 运行 shell 脚本来执行此备份的可能性。使用 shell 脚本很容易工作,但通过 .java 执行此操作,我真的不知道。
另外,我尝试了很多代码来备份我的 sqlite 数据库文件,但我很不成功。这是我的代码供您查看:
public class Backup extends Activity {
public void exportDB(){
try {
File sd = Environment.getExternalStorageDirectory();
if (sd.canWrite()) {
String currentDBPath = "data/data/com.sec.android.app.twlauncher/databases/launcher.db";
String backupDBPath = sd + "/launcher.db";
File currentDB = new File(currentDBPath);
File backupDB = new File(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();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
我已经添加了外部存储写入权限,当然是在 androidmanifest 中,但没有任何反应。没有FC,它只是坐在那里无所事事。当我检查我的 sdcard 时,那里什么都没有。
任何帮助将不胜感激。谢谢
【问题讨论】:
-
查看 logcat 输出。可能有“fileNotFoundException”。如果没有进一步测试,我认为您要复制的文件不存在或您要写入的文件尚未创建。
-
它可能不会强制关闭,因为错误发生在 try 语句中并被捕获。为了更好地处理错误,使用
catch (FileNotFoundException e) and catch(IOException e)和那些东西而不是通用的catch (Exception e)更容易。 -
非常感谢您的回复。我会尝试一些进一步的测试。你碰巧知道我的问题的第一部分吗?将 /data/system/batterstats.bin 之类的文件(非 SQLlite)备份到 sdcard,甚至更好(对我来说:P)如何通过 apk 运行 shell 脚本命令?
标签: android file backup sd-card