2017-10-30 14 views
0

모든 장치를 실행하고 sdcard의 기본 경로를 반환하는 방법을 찾을 수 없습니다. 필터 "storage"를 사용하여 모든 파일을 가져온 다음 외부 파일인지 확인하려면 다음과 같은 방법을 찾았습니다. 그것은 몇 가지 장치에서 잘 작동합니다.sdcard에서 파일을 읽는 일반적인 방법

File root = new File("/storage/"); 
    File dirs[] = root.listFiles(); 

    for (File dir : dirs) { 
     if (Environment.isExternalStorageRemovable(dir.getAbsoluteFile())) { 
      return dir.getPath(); 
     } 
    } 

지금 내가이 카드를 읽을 수 없습니다입니다 위의 코드를 통해 누구의 sdcard 경로 "roor입니다/이동식/마이크로 내 손에 장치를 얻었다. 나는 많은 링크하지만 겪었 표준 방법을 찾을 수 없습니다 ... 나는 또한 다음과 같은 시도했지만이 실제 주소를 반환하지 않습니다

String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath(); 
+0

Android 4.4에서 파일 시스템을 통해 이동식 미디어에 임의로 읽기 액세스 권한이 없습니다. – CommonsWare

답변

1

난 당신이 액세스 이동식 SDCard에를 원하는 가정이 SDCard에의 경로를 얻을 수있는 표준 방법은 다음과 같습니다. Context.getExternalFilesDirs() 일반적으로 SDCard에 경로 마지막 하나이며 개인 하위 경로 (Android/...)를 제거해야합니다. SDCard도 탑재되어 있는지 확인하십시오.

String path = null; 
File[] dirs = getContext().getExternalFilesDirs(null); 
if (dirs!=null && Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { 
    path = dirs[dirs.length-1].getAbsolutePath(); 
    path = path.substring(0, path.indexOf("Android")); 
} 
return path; 
+0

ur 답변 주셔서 감사하지만 getExternalFilesDir() 인수로 문자열을 가져 가라. 이 호출에서 문자열로 무엇을 보내야합니까? –

+0

null을 설정할 수 있습니다. 답변 됨 updated – alrama

+0

넌센스 응답. getExternalFilesDir()은 이동식 SD 카드에서 절대 경로를 반환하지 않습니다. OP가 그것을 받아들이는 것은 매우 이상합니다. getExternalFilesDirs()를 의미합니까? – greenapps