2013-04-21 1 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를 반환합니다. 그림 디렉토리 아래에 파일을 나열하려고하면 null이됩니다.

자세한 내용이 필요하면 알려주세요. [UPDATE 2 가 에뮬레이터에 잘 작동 이후이 장치 특정 문제 같다

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

의 AndroidManifest.xml

[UPDATE]

권한.

+0

AndroidManifest.xml에서 권한이 필요합니까? – wangyif2

+0

예, 안드로이드 매니페스트에서 android.permission.WRITE_INTERNAL_STORAGE했습니다. 위의 질문을 업데이트했습니다. – bianca

+0

getExternalStoragePublicDirectory 대신 getExternalFilesDir (DIRECTORY_PICTURES)를 사용하십시오. – wangyif2

답변

0

AndroidManifest.xml에서 잘못된 권한을 선언했습니다. 실제로 외부 저장소를 사용하고 있습니다. 당신은 안드로이드를 실행하면 안드로이드 에뮬레이터에서 실행 중이 귀하의 응용 프로그램에 의해 강제 권한으로 응용 프로그램을 테스트 할 수 있습니다

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

: API 16에서 외부 저장 장치를 사용하는 경우 필요한 새 권한을가 4.1 이상, 또는 Android 4.1 이상을 실행하는 기기의 설정 앱의 개발자 옵션에서 USB 저장 장치를 사용하도록 설정합니다.

아마도 귀하의 장치에 USB 저장 장치가 설정되어있는 경우에는 READ_EXTERNAL_STORAGE 권한을 사용해야합니다. 덧붙여서 WRITE_EXTERNAL_STORAGEREAD_EXTERNAL_STORAGE을 다룰 것입니다.

1

난 그냥 "장치 특정"문제의 또 다른 지점으로 chiming ... 난 읽기 권한이 외부 디렉토리에 대한 액세스를 얻으려고하는 ZTE 대행을 가지고 있지만 같은 문제가 다음과 같은 권한이 어디에

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

합니다 (WRITE_EXTERNAL_STORAGE 권한을 사용) 실제로 파일에 결과가 getExternalFilesDir (에 의해 반환되는) 위에서 언급 한 트릭 ... 이상한 .. 너무 이상한 ...

: getExternalFilesDir()의 결과는 널 (null)을 반환
관련 문제