Android FileNotFound可以读取并存在错误的媒体whatsapp文件

时间:2018-06-30 18:20:51

标签: android whatsapp filenotfoundexception

我正在尝试读取一个存在的文件,但是我不能。谢谢!

enter image description here

File f = new File("/mnt/sdcard/WhatsApp/Media/WhatsApp Images/IMG-20180628-WA0000.jpg");

File sdDir = Environment.getExternalStorageDirectory();
Log.w("Whatsapp","#SDDIR CANREAD? "+ sdDir.canRead() +" PATH: "+ sdDir.getAbsolutePath());

f.setReadable(true,false);
Log.w("Whatsapp","#FILE: "+ f.getName() +" l:"+ f.length() +" exists:"+ f.exists() +" canRead:"+ f.canRead() +" PATH: "+ f.getPath() +" ABSOLUTE: "+ f.getAbsolutePath());

日志

#SDDIR CANREAD? false PATH: /storage/emulated/0
#FILE: IMG-20180628-WA0000.jpg l:0 exists:false canRead:false PATH: /mnt/sdcard/WhatsApp/Media/WhatsApp Images/IMG-20180628-WA0000.jpg ABSOLUTE: /mnt/sdcard/WhatsApp/Media/WhatsApp Images/IMG-20180628-WA0000.jpg

enter image description here

enter image description here

AndroidManifest权限

<uses-permission android:name="ANDROID.PERMISSION.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="ANDROID.PERMISSION.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="ANDROID.PERMISSION.MANAGE_DOCUMENTS" />

2 个答案:

答案 0 :(得分:1)

首先,您没有对removable storage的任意读写访问权限。

第二,Android中的大多数内容都区分大小写。因此,您的<uses-permission>元素将不起作用。

第三,您不能拥有MANAGE_DOCUMENTS权限,因为该权限不适用于普通应用程序。

因此,您可以通过将现有的<uses-permission>元素替换为以下内容来修复清单:

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

但是,您仍然可能无法访问该特定文件。

答案 1 :(得分:0)

有效!

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

enter image description here