我正在为root手机开发一个应用程序,它将备份和恢复所有应用程序及其数据。当我打开该应用程序将任何应用程序的数据恢复到/ data / data / {packageName}后,它崩溃,异常 android.database.sqlite.SQLiteReadOnlyDatabaseException:尝试编写只读数据库,因为我复制了该数据库app的数据库文件到/ data / data / {packageName}目录。
我用来恢复数据的代码:
String packageName = app.getPackageName();
File destinationFile = new File("/data/data/"+packageName);
File sourceFile = new File(Environment.getExternalStorageDirectory()+File.separator+"MyBackup"+File.separator+packageName);
String command = "cp -r "+sourceFile.getAbsolutePath()+File.separator+"* " + destinationFile.getAbsolutePath()+File.separator;
try {
Runtime.getRuntime().exec(new String[]{"su", command});
} catch (IOException e) {
e.printStackTrace();
}
任何人都可以告诉我哪里出错了?
答案 0 :(得分:1)
我认为您还必须在chown
中设置这些文件和目录的相应权限和所有者(chmod
和/data/
)。