2012-12-01 2 views
5

안드로이드 4.2에서 sdcard의 루트 폴더에 직접 액세스해야하는 응용 프로그램을 개발 중입니다. 표준/sdcard 디렉토리는 이제 사용자에 특정한 "에뮬레이션"sdcard를 가리 킵니다 앱 실행 내 응용 프로그램은 sdcard의 최상위 수준에 저장된 파일에 대한 액세스가 필요하기 때문에 이것은 좋지 않습니다. 누구나 안드로이드 4.2에서 sdcard에 직접 액세스하는 방법을 알고 있습니까?안드로이드에서의 액세스/sdcard 4.2

+0

실제 이동식 SD 카드입니까? 필자가 보았던 4.x 장치에는 실제로 내부 저장소 볼륨 내에 하나의 에뮬레이션 만있는 sdcard가 없으므로 목표는 의미가 없습니다. 실제 카드가 있다면 adb 쉘의 'mount'명령을 사용하여 어떻게 처리되는지 볼 수 있습니다. –

+0

오해하는 것 같습니다. 가상 디스크 인 경우에도 항상/sdcard 파티션이 있습니다. 그러나 4.2 업데이트를 사용하면/sdcard를 완전히 다르게 처리 할 수 ​​있습니다. sdcard 파티션에 액세스하면 (코드에서) 더 이상 실제 */sdcard를 가리 키지 않습니다. 현재 사용자에게 특정한 sdcard의 가상 "파티션"을 가리 킵니다. 기기와 상관없이 내가 개발중인 앱은 Android 버전이 4.2 이하인 경우 잘 작동합니다. – Drew

+0

Koushik Dutta (ROM 관리자의 개발자)가이 게시물을 보았습니다. 여기서 그는 동일한 문제에 대해 불평합니다. https://plus.google.com/103583939320326217147/posts/D7mZBjTJj5j – Drew

답변

2

저장 디렉터리를 파일 형식으로 사용할 수 있습니까? (java.io.File)

그렇다면, 당신은 당신의 방법에서이 같은 외부 저장 얻을 수 있습니다 (일반적으로 SD 카드를,하지만 SD 카드와 휴대폰에 주 기억 될 것입니다) 코드를 사용하여 :

File path = Environment.getExternalStorageDirectory(); 

또한 저장 용량에 대한 액세스에는 Android 매니페스트의 READ_EXTERNAL_STORAGE 권한이 필요합니다. 데이터가 수정되는 경우 WRITE_EXTERNAL_STORAGE이 필요합니다. 여기가 매니페스트에있는 것 같은 이러한 권한은 다음과 같습니다

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

출처 :

http://developer.android.com/reference/android/os/Environment.html 아마도 http://developer.android.com/reference/android/Manifest.permission.html

+0

그게 내가 현재 사용하고있는 문제이지만 안드로이드 4.2에서는/sdcard (ExternalStorageDirectory) 파티션의 실제 루트가 아닌/sdcard (ExternalStorageDirectory) 파티션의 특별한 사용자 별 위치로 리디렉션됩니다. – Drew

+0

아아, 알겠습니다 - 죄송합니다. 나는 당신의 질문에 대해 오해했습니다. – Alex6642122

1

내 넥서스 갤럭시 실행하는 Android 4.2.1로, 그러나, 귀하의 질문을 오해하고 Environment.getExternalStorageDirectory()을 사용하여 내 sd 카드에 액세스 할 수 있습니다. 반환 된 디렉토리는 /storage/emulated/0이지만 내용은 /sdcard입니다.

+0

저장소에 관한 문서가 있지만 4.4 source.android.com/devices/tech/storage/config-example.html 및 doubleencore.com/2014/03/android-external-storage – pevik

관련 문제