Java 无法从Android设备中的SD卡文件夹读取文件?

Java 无法从Android设备中的SD卡文件夹读取文件?,java,android,android-listview,whatsapp,Java,Android,Android Listview,Whatsapp,我正在尝试访问未根设备中Environment.getExternalStorageDirectory.getAbsolutePath+/WhatsApp/Databases位置中存在的WhatsApp数据库文件夹 我的目标是收集这些文件并解密它们,然后将每条消息显示给Web门户。以下是收集这些文件的代码: String path = Environment.getExternalStorageDirectory().getAbsolutePath() + location; f = new

我正在尝试访问未根设备中Environment.getExternalStorageDirectory.getAbsolutePath+/WhatsApp/Databases位置中存在的WhatsApp数据库文件夹

我的目标是收集这些文件并解密它们,然后将每条消息显示给Web门户。以下是收集这些文件的代码:

 String path = Environment.getExternalStorageDirectory().getAbsolutePath() + location;
 f = new File(path);
 final File file[]=f.listFiles();
 final int size = file.length;
每当我在根设备上运行时,它都会工作,但在一些未根设备上,它会抛出null指针,因为它无法获取所有数据库文件的列表

我的问题是:当设备不是根目录时,是否可以准备WhatsApp数据库文件?
或者有什么方法可以做到这一点吗?

不,如果没有根目录,您就无法从Android设备获取SQLite数据库文件,因为您没有访问数据文件夹的权限


但是,如果在emulator上运行应用程序,您可以获得数据库。

我不确定根效果。您是否已获得应用程序的许可?如果没有,您可以尝试将uses permission android:name=android.permission.READ_EXTERNAL_存储放在清单上,然后对其进行测试。

如果设备没有根目录,您可以读取数据库文件try below代码

我已经在三星Grand 2,HTC上试用过了

别忘了添加权限

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

是否可以只为这个应用程序创建root?我还认为root不会影响这个应用程序,因为它在三星设备上工作,但在Nexus和motog上不工作
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />