2011-08-09 3 views
2

저는 지금까지는 단지 하나의 액티비티로 구성되어있어서 전화 sd 카드에 모든 mp3 파일을 재귀 적으로 추가하는 mp3 플레이어 안드로이드 프로젝트를 작업하고있었습니다.안드로이드 프로그램 충돌 및 .android_secure

내 응용 프로그램이 계속 충돌하고 많은 디버깅 후에 필자는 숨겨진 디렉터리 /sdcard/.android_secure를 찾았고이 디렉터리에서 listFiles()를 호출하려고 시도 할 때 응용 프로그램이 충돌한다는 것을 알게되었습니다. 숨겨진 파일을 처리하지 않도록하여 문제를 해결했습니다.

제 질문은 정확히 여기 무슨 일입니까? 내 응용 프로그램에는 .android_secure의 내용에 액세스 할 수있는 권한이 없다고 가정합니다. sdcard를 통해 더 강력한 검색 방법이 있습니까?

아래 관련 코드를 추가했습니다. 어떤 도움을 주셔서 감사합니다.

File storage = Environment.getExternalStorageDirectory(); 
    addMp3Files(storage); 
} 

private void addMp3Files(File rootDir) { 
    for (File file : rootDir.listFiles()) { 
     if (file.getName().toLowerCase().endsWith(".mp3")) { 
     songs.add(file.getAbsolutePath()); 
     } else if (file.isDirectory() && !file.isHidden()) { 
      addMp3Files(file); 
     } 
    } 
} 
+0

질문에 예외 로그를 ​​첨부하십시오. – Jack

+0

문제를 더 잘 분석 할 수 있도록 로그를 잘 보내십시오. 감사. – artsylar

답변

3

.android_secure 폴더가 APP2SD 기능에 사용됩니다. SD 카드로 이동 한 앱 파일이 여기에 저장됩니다. 권한 비트를 확인하면 그것이 ------임을 알 수 있습니다. 즉, 애플리케이션에이 폴더에 대한 읽기 권한이 없습니다. 그것이 추락 한 이유입니다.
응용 프로그램에서 읽을 수없는 파일 및 폴더 (예 : .android_secure)를 제외하려면 file.canRead() 메서드로 검사 할 수 있습니다.

관련 문제