내 개발 전화는 Nexus 5
이며 Android 4.4.2
입니다.android의 외부 저장소에 폴더를 만들 수 없습니다.
내 응용 프로그램에서 내 응용 프로그램에 대한 디버그 정보를 저장할 외부 저장소에 폴더를 만들려고합니다. 기본적으로 응용 프로그램에서 실행되는 모든 명령이 포함되어 있으므로 사용자가 문제가 발생하면 디버그 폴더에서 정보를 보내 분석 할 수 있습니다.
폴더에 파일을 쓰려고했지만 파일을 만들 때 오류가 있음을 발견했습니다. 처음에 나는 mkdir()
을 사용하고 있었고, 나는 또한 작동하지 않는 mkdirs()
위로 옮겼습니다.
내 매니페스트에 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
이 있습니다.
File folder = new File(Environment.getExternalStorageDirectory() + "/DebugData");
String path = folder.getPath();
if(!folder.mkdirs() || !folder.exists()){
Log.e(LOG_TAG, path + " failed");
} else {
Log.d(LOG_TAG, path + " succeeded");
}
가 나는 또한 시도 것입니다 : 여기
폴더를 생성하는 코드입니다//Check SD card state
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state) || !Environment.MEDIA_MOUNTED.equals(state)) {
Log.e(LOG_TAG, "Error: external storage is read only or unavailable");
} else {
Log.d(LOG_TAG, "External storage is not read only or unavailable");
}
이 외부 저장 하지 읽기 전용 또는 사용할 수 없음을 반환합니다.
는 또한 정말 혼란 된 곳입니다 같은 File folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Folder1");
등 다양한 경로를 시도했다.
다른 휴대 전화에서 개발을 시도했습니다. 첫째, Galaxy S4 GT-i9505
을 실행하여 Android 4.2.2
을 실행하면 효과가있었습니다. 폴더를 만들어서 쓸 수있었습니다. 이것은 코드가 작동하고 있음을 보여주었습니다. S4 및 Nexus 5에서 코드를 실행하여 반환 된 경로도 동일합니다.
그런 다음 나는 그것이 특정 안드로이드 버전일지도 모른다라고 생각했다. 그래서 나는 을 Android 4.4.2
으로 붙잡아 코드가 잘 작동했습니다. 폴더를 만들었고 그 폴더에 쓸 수있었습니다.
휴대 전화는 뿌리가 없으며 모든 주식 표준입니다. 특별한 애플리케이션이나 Nexus 5의 설정과 관련하여 권한 문제를 일으킬 수있는 사항은 없습니다. 연결이 미디어 장치 (MTP)로 설정됩니다.
편집 :
나는 또한 작동하지 않았다 추적 시도 것을 추가해야합니다 :
- 을 파일 만들기 외부 저장
- 의 루트 디렉토리에 파일을 작성을 외부 저장소 루트 디렉터리에 저장하고 쓰기.
- 경로에 폴더 만들기 및 파일 쓰기
- 윤곽선에 파일을 작성하고 작성하십시오.
무엇이 문제의 원인인지 혼란 스럽습니다. 문제를 해결하기 위해 테스트하거나 변경할 수있는 것이 있습니까?
편집 2 :
, 나는 생각한다, 문제가 때문 색인을 끈다.
내가 테스트 한 다른 모든 장치는 기본적으로 USB 연결을 다시 연결하고 만들어진 파일과 폴더를 볼 수있었습니다.
내 Nexus 5는 폴더/파일이 존재하더라도 색인을 생성하지 않습니다.
다른 타사 파일 탐색기 응용 프로그램을 다운로드했으며 모든 폴더와 파일이 있음을 확인했습니다.
USB 디버깅을 통해 이러한 폴더와 파일을 보려면 다시 색인화하기 위해 전화기를 다시 시작해야합니다.이 파일은 매우 성가신 것처럼 보이지만 작동하지 않는 것보다 낫습니다.
감사합니다.
'File' 객체를 만들기 위해 연결을 사용하지 마십시오. 'new File (Environment.getExternalStorageDirectory(), "SmartspeedPTdata")'와 같은 적절한'File' 생성자를 사용하십시오. 그것은 당신의 어려움의 원천이 아니지만 도움이 될 수 있습니다. – CommonsWare
루트 디렉터리에 액세스 할 수 없습니다. 외부 저장 장치의 루트에 액세스 할 수없는 장치가 있습니다. 특히 작성하려는 경우 매니페스트 파일에 적절한 권한이 있어야합니다. –