Java 应用程序可以';t访问外部SD卡(只读)

Java 应用程序可以';t访问外部SD卡(只读),java,android,permissions,Java,Android,Permissions,我希望我的应用程序能够从外部SD卡上的DCIM/MEDIA100文件夹中读取和复制文件,但尽管在我的AndroidManifest中包含了WRITE_external_存储和read_external_存储权限,但我的应用程序无法看到外部SD卡。我正在运行安卓4.4.2 因此,当我执行下面的代码时,m_subdirs将列出“sdcard”(在内部存储器中),而不是extSdCard(外部SD卡)。在这个Android版本中,我是否完全无法读取外部SD卡?我从下面的链接中得到了提示,如果我包含上面

我希望我的应用程序能够从外部SD卡上的DCIM/MEDIA100文件夹中读取和复制文件,但尽管在我的AndroidManifest中包含了WRITE_external_存储和read_external_存储权限,但我的应用程序无法看到外部SD卡。我正在运行安卓4.4.2

因此,当我执行下面的代码时,m_subdirs将列出“sdcard”(在内部存储器中),而不是extSdCard(外部SD卡)。在这个Android版本中,我是否完全无法读取外部SD卡?我从下面的链接中得到了提示,如果我包含上面的权限,从外部SD读取是可能的。 ???


kitkat 4.4.x有SD卡限制。

我认为您必须在
/storage
下查找,在那里您应该可以找到
sdcard1
或使用

是的,我知道对外部卡的写入有这些限制,但我的印象是,从外部SD卡读取仍然是可能的。不是这样吗?@IanM:不是,在4.4+上。我不明白的是为什么Environment.getExternalStoragePublicDirectory(String.valueOf(Environment.DIRECTORY_PICTURES))会将我带到“内部”(模拟)SD卡上的某个位置,例如在HTC One上,照片应用程序会将照片存储在外部(“物理”)SD卡上。摄像头应用程序在编写文件时不应该使用标准API吗?(开发人员难道不能使用相同的API访问摄像头应用程序创建的文件吗?“外部”、“内部”存储行为在Android 2.x、4.x和5.x之间又发生了很大变化。@commonware link在他的评论中对此进行了详细解释。谢谢-我已经阅读了这篇文章,非常有用。它确实这么说“应用程序可以使用各种未记录和不受支持的查找可移动媒体的技巧读取可移动媒体上的文件”。我想我正在寻找一种方法(最好基于首选API),因为“技巧”"到目前为止,我尝试过的方法没有成功地提供对默认照片应用程序用于存储的文件夹的访问。因为我只希望只读访问,我不认为Android 4.4以后的更改会排除这一点。或者我误解了这一点?在我的设备上,我可以毫无问题地访问
/storage/sdcard1/DCIM
ms用于从第三方应用程序读取…具体来说,摄像头应用程序将文件存储在辅助外部存储上,但我在API中找不到访问用于存储的文件夹的方法(例如/mnt/extSdCard/DCIM/100Media)
m_dir = "/mnt";
m_subdirs = getDirectories(m_dir);