2016-12-05 3 views
0

나는 안드로이드 장치에서 디렉토리를 생성하는 문제를 해결하려고합니다. 일부 타사 앱이 내부 디렉토리/저장소/에뮬레이션/0/Android/데이터에 카탈로그를 만드는 것으로 나타났습니다. 어떻게 달성 할 수 있습니까? 여기에 코드의 내 작품,하지만 그것은 작동하지 않습니다 도움말에 대한외부 저장소에 디렉터리 만들기

if(FileUtils.isExternalStorageAvailable() && FileUtils.isExternalWritable()){ 
       File path = new File(Environment.getExternalStorageDirectory() +"/Android/data/reports"); 
       Log.d("DEBUG", Environment.getExternalStorageDirectory() +"/Android/data/reports"); 
       if(path.mkdirs()){ 
        Toast.makeText(getActivity(), "catalog created", Toast.LENGTH_LONG).show(); 
       } 
      } 

덕분에, 안부 외부 저장에 Android/data/getExternalFilesDir() 및 친척을 위해 안드로이드에 의해 사용되기 때문에 당신은 차단 될 수 있습니다

+1

** ** 자세히 설명해주세요 **, ** "** ** ** ** ** ** ** ** ** ** **"당신이 어떻게 작동하지 않는지를 어떻게 결정했는지를 ** 정확히 ** 의미합니다. – CommonsWare

+0

부정확 한 점에 대해 죄송합니다. 카탈로그를 만들지 않고 오류가 발생하지 않습니다. 또한/storage/emulated/0에 직접 카탈로그를 만들려고했는데 예를 들어 저장소/에뮬레이트/0/Picutres를 사용하면 결과가 동일합니다. 반면에 내부 저장소에 카탈로그를 만들 수는 있지만 다른 응용 프로그램에서는 사용할 수 없습니다. Adobe Reader가 정확해야합니다. – adams172

+0

"카탈로그를 만들지 않음"- ** 자세히 설명해주십시오 **, 이것이 의미하는 바와 테스트 방법. 예를 들어, "catalog"가 "directory"를 의미한다면,'adb shell ls' 또는 온 - 디바이스 파일 관리자 나 데스크탑 OS의 드라이브 문자/마운트 된 볼륨 등을 사용하여 확인하고 있습니까? – CommonsWare

답변

0

. 디렉토리가 Android/data/ 인 경우 getExternalFilesDir() (보너스 : API 레벨 19 이상에서는 권한이 필요하지 않음)을 사용하십시오.

그 외에도 you are handling runtime permissions인지 확인하십시오.

결국 코드를 ​​allow users to see files that you put in your directory에 추가하려고합니다.

+0

** getExternalFilesDir() **을 사용할 때 ** **/storage/emulated/0/**을 가져오고이 디렉토리에서 내 폴더를 만들 수 없으므로 ** 사용을 시도했습니다 ** Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DOCUMENTS) +/reports ** _ "reports"_는 내 디렉토리이고 Catalog는 생성되지 않으며 안드로이드 장치 모니터에서도 ** Documents ** 디렉토리가 보이지 않습니다. – adams172

+0

@ adams172 : "getExternalFilesDir()을 사용할 때/storage/에뮬레이트/0/"-'Context'의 getExternalFilesDir()는'/ storage/emulated/0 /'을 반환하지 않아야합니다. "심지어 문서 디렉토리가 Android Device Monitor에 표시되지 않습니다."- 특히 실행중인 Android 버전에 따라 디렉토리가 자동으로 만들어지지 않을 수 있습니다. 모니터에 표시되는 내용을 확인하기 위해 다른 도구 (예 :'adb shell ls')를 사용하는 것을 고려해보십시오. 내 환경에서는 모니터 관리자의 파일 관리자가 몇 달 동안 작동하지 않았지만 내 경우에는 아무것도 표시되지 않습니다. – CommonsWare

+0

adb 쉘을 통해 확인했으며 디렉토리가 생성되지 않았습니다. 내부 저장소 ** context.getFilesDir() **에서 작동하려고하면 디렉토리를 만들 수 없기 때문에 파일을 공유해야하므로 문제가 해결되지 않습니다. 다른 응용 프로그램과 디렉토리에서 - AdobeReader. – adams172

관련 문제