无法从Android设备中的SDcard文件夹中读取文件?

时间:2014-04-23 09:12:02

标签: java android android-listview whatsapp

我正在尝试访问非根设备中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个文件? 或者有什么办法吗?

3 个答案:

答案 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");
        }

enter image description here

请勿忘记添加权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

答案 2 :(得分:-2)

不,如果没有root用户,你就无法从Android设备获取SQLite数据库文件,因为你无权访问数据文件夹。

但是,如果您在模拟器上运行应用程序,则可以获取数据库。