我的APP需要root权限才能进行一些分析,因此我将代码编写为
“Runtime.getRuntime().exec("su");
”,然后将linux命令或shell脚本写入其中。
我尝试将/data/data/packagename/databases/webview.db文件复制到/ sdcard / test(源数据库文件是我手机中存在的所有应用程序数据文件,虽然java代码我只能获取我的应用程序本身的文件),
然后做一些分析。但麻烦的是,源文件名是相同的,如果我使用
“cp -r /data/data/*/webview.db /sdcard/test
”
目标目录中始终只有一个文件,我不太擅长linux shell
命令,所以我想知道如何复制到目标目录并更改文件名或只是
保留源目录结构,如/sdcard/test/package/webview.db。我是中国人,我是
英语不太好,希望你能理解,谢谢!
答案 0 :(得分:2)
我正在使用此代码并且它运行良好!
public void copyDbToSdcard() {
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath = "//data//" + this.getPackageName()
+ "//databases//db";
String backupDBPath = Environment.getExternalStorageDirectory()
.toString() + "/Darama1/db";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, 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) {
}
}
答案 1 :(得分:0)
您可以使用adb。
USB连接设备后
你跑:
adb -s YOURDEVICE pull /data/data/packagename/databases/webview.db
知道你的设备是什么
你跑:
adb devices
这样,您可以在桌面上使用webview.db文件,然后根据需要使用它