2013-04-21 55 views
0

我想访问外部存储中公用文件夹中的图片文件。这里是我的代码:无法访问android-Galaxy S3中的图片文件

if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { 
      java.io.File pictureDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); 
      ///storage/sdcard0/Pictures 
      boolean canRead = pictureDir.canRead(); 
      //Above gives false 
      java.io.File[] picFiles = pictureDir.listFiles(); 
      //null is returned for the file though I've atleast three picture files at this location 
     } 

它给了我正确的公共文件夹指针,但canRead()方法返回false。当我尝试列出图片目录下的文件时,它给了我空。

让我知道,如果你需要更多的细节。

[更新]

权限在AndroidManifest.xml

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

[更新2] 这看起来像一个设备特定问题,因为它可以在模拟器罚款。

+0

你是否需要AndroidManifest.xml的权限? – wangyif2 2013-04-21 18:17:27

+0

是的,我在android清单中有android.permission.WRITE_INTERNAL_STORAGE。更新了上面的问题。 – bianca 2013-04-21 18:21:29

+0

尝试使用getExternalFilesDir(DIRECTORY_PICTURES)而不是getExternalStoragePublicDirectory – wangyif2 2013-04-21 18:28:57

回答

0

你在你的AndroidManifest.xml中声明了错误的权限。您实际上正在使用外部存储。从API 16有是如果您正在使用外部存储需要新的权限:

http://developer.android.com/reference/android/Manifest.permission.html#READ_EXTERNAL_STORAGE

你可以运行Android当上了Android模拟器通过运行 您的应用程序执行权限测试您的应用4.1或更高版本, 或在运行Android 4.1或更高版本的设备上的 设置应用中的开发人员选项下启用USB存储。

可能在您的设备中设置了保护USB存储,在这种情况下您需要使用READ_EXTERNAL_STORAGE权限。顺便说一下WRITE_EXTERNAL_STORAGE将覆盖READ_EXTERNAL_STORAGE

1

我只是想与另一个“设备特定”麻烦点..我有一个中兴通讯代客,我试图访问外部目录进行阅读,但有同样的问题,其中以下权限结果getExternalFilesDir()返回NULL:

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

上述(使用WRITE_EXTERNAL_STORAGE许可)确实导致文件被getExternalFilesDir(返回)诀窍...奇怪..所以奇...