我正在尝试访问非根设备中WhatsApp
位置中存在的Environment.getExternalStorageDirectory().getAbsolutePath() + /WhatsApp/Databases
数据库文件夹。
我的目标是收集这些文件并对其进行解密,并将每封邮件显示给Web portal
。以下是收集这些文件的代码:
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + location;
f = new File(path);
final File file[]=f.listFiles();
final int size = file.length;
每当我在root设备上运行时It is working
,但在某些无根设备上,它会抛出nullpointer
,因为它无法获取所有数据库文件的列表。
我的问题是:当设备不是root时,是否可以准备WhatsApp Database
个文件?
或者有什么办法吗?
答案 0 :(得分:1)
我不确定 root 效果。您是否获得了应用程序的许可?如果没有,您可以尝试将uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE
放在清单上,然后进行测试。
答案 1 :(得分:0)
如果设备未植根,您可以读取数据库文件,尝试下面的代码。
我在三星Grand 2 , HTC
中尝试过这些String path = Environment.getExternalStorageDirectory()
+ "/WhatsApp/Databases";
File file = new File(path);
if (file.exists()) {
File[] filenames = file.listFiles();
for (File tmpf : filenames) {
// Do something with the files
if (tmpf.isFile()) {
Log.e("tmpf-------->", "not add---->" + tmpf.getPath());
}
}
} else {
Log.e("folder not found", "folder not found");
}
请勿忘记添加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
答案 2 :(得分:-2)
不,如果没有root用户,你就无法从Android设备获取SQLite数据库文件,因为你无权访问数据文件夹。
但是,如果您在模拟器上运行应用程序,则可以获取数据库。