2016-09-07 2 views
1

좋아, 빠른 머리 위로 나는 안드로이드 프로그래밍에 익숙하지. 나는 uni에서 java에 대한 아주 기본적인 경험을 가지고있다. 최근에 내 삼성 갤럭시 탭을 위해 Android Studio 및 앱을 사용하고 있습니다. 죄송합니다. 이전에 물어 본 적이 있지만 보지 못했습니다.Android - 저장 위치 액세스

내 SD 카드에있는 모든 파일 이름을 표시하는 앱을 만들려고했습니다. 최상위 수준. 나는 단추와 텍스트보기만으로 빠른 인터페이스를 만들었다. (단 하나의 텍스트보기는 목록을 표시하지 않지만 문제는 있지만 어쨌든 나는 가지고있다.)

은 다음 코드로 끝났다.

*public void ShowFolder(View view){ 
    TextView test = (TextView)findViewById(R.id.View); 
    root = new File(Environment.getRootDirectory().toString()); 

    File[] Files; 
    Files = root.listFiles(); 

    String[] File_List; 
    File_List = root.list();* 

그런 다음 디버거를 사용하여 두 배열 목록에 모두 표시되는지 확인했습니다. 이 코드를 세 번 실행했지만 "Environment.getRootDirectory"를 "getExternalStorageDirectory()"및 "getDataDirectory()"로 변경했습니다.

getRootDirectory 버전만이 아무것도 반환하지 않습니다. 다른 두 인스턴스에서 디버거는 Files 및 Files_list에 대해 모두 NULL을 표시합니다. 나는 유효한 위치라는 것을 알고 있습니다. 그 명령을 사용하여 파일 브라우저로 타블렛에서 수동으로 찾을 수있는 문자열로 출력했기 때문입니다.

그래서 간단히 말해서이 세 가지 옵션 모두가 파일 목록을 반환하지 않습니다. 내 첫 번째 생각은 권한이지만 나는 이것을 확인하는 방법을 확신하지 못했습니다. (긴 게시물에 대한 죄송합니다)

답변

1

File을 만들 toString()를 사용하지 마십시오. getRootDirectory()은 이미 File 개체를 반환합니다. 이 같은

시도 뭔가 : 당신이 좋아 getExternalStorageDirectory()

+0

의 문서에서 여기에서 볼 수 있듯이

File root = Environment.getRootDirectory(); String[] rootList = root.list(); File[] rootListFiles = root.listFiles(); 

은 또한 당신은 READ_EXTERNAL_STORAGE 허가를 받아야 할 필요가 이러한 변경을했다. 오류가 아니라 내 부분에 나쁜 연습이 있습니까? getExternalStorageDirectory() 및 getDataDirectory()가 배열 목록의 항목을 반환하지 않는 이유에 대한 정보는 무엇입니까? –

+0

필자는 사용 권한이 누락되었다는 추가 정보를 사용하여 내 대답을 편집했습니다. – rafal

+0

고마워, 권한이 추가 된 모든 3 디렉터리 함수에 대한 값을 반환 할 수 있습니다. 디렉토리 경로를 반환하는 다른 유사한 기능이 있습니까? 구체적으로 내 SD 카드로 경로를 반환합니다. 나는 또한 이것을 보았지만 getExternalStorageDirectory() 함수는 어떤 장치가 사용되고 있는지에 따라 시간의 일부가 아닌 다른 것을 수행하는 것으로 보인다. –