2013-07-09 3 views
7

일부 파일을 다운로드하여 전화/탭의 내부 저장 장치에 저장하고 싶습니다. 삼성 갤럭시 노트 2와 갤럭시 탭 10.1에서 시도했다. 내가 /storage/sdcard0/을 사용할 때 코드는 성공적으로 실행되지만 Galaxy Nexus 3을 사용하면 코드가 실패합니다.안드로이드 외부 저장 장치 받기 Absolute Path

phoe 또는 탭의 내부 저장소의 절대 경로를 얻고 싶습니다. 'Absolute Path.

가능하면 어떻게 될까요?

+0

이 질문은 내부/외부에서 매우 혼란 스럽습니다. ** 따라서 ** 중복 된 내용으로 제안하지 마십시오. –

답변

25

내가/저장/sdcard0 사용 권한을 추가하는

필요가/그들에 코드가 성공적으로 실행하지만 갤럭시 넥서스 3를 사용할 때 코드가 실패합니다.

/storage/sdcard0/은 내부 저장 장치가 아닙니다. 외부 저장소입니다.

, getFilesDir()를 사용

이 앱 내부 저장소의 위치를 ​​찾으려면 ("갤럭시 넥서스 3 '라는 이름의 장치가 없기 때문에 BTW, 난 당신이 단순히"갤럭시 넥서스 "의미가 있다고 가정하고) File 객체를 얻기 위해 어떤 Context (예 : Activity로했다.

이 앱 외부 저장 고유의 위치를 ​​얻으려면 어떤 Context (예 : Activity로를 얻으려면, 호출 getExternalFilesDir()을 사용 File 개체.

는 파일 (예를 들어, 영화)의 일반적인 유형에 대한 외부 저장에 표준 위치를 얻을 EnvironmentgetExternalStoragePublicDirectory()을 사용합니다.

루트 의 외부 스토리지를 얻을 EnvironmentgetExternalStorageDirectory()을 사용합니다. 그러나 이것은 개발자가 파일을 임의의 위치에 두는 것을 장려하기 때문에 요즘은 실수 한 프로그래밍으로 간주됩니다.

+0

나는 안드로이드 프로그래밍에 새로운 사람이다. 저장 장치에 파일을 저장합니다.예를 들어, 내 Galaxy Note 2의/storage/sdcard0/Whatssapp, Music, Alarm sth ..를 봅니다. 모든 휴대폰/탭에 대해/storage/sdcard0/path를 어떻게 얻을 수 있습니까? 감사. –

+2

@ Erdinçozzir :'Environment'에'getExternalStorageDirectory()'를 사용하십시오. 그러나 이것은 개발자가 파일을 임의의 위치에 두는 것을 장려하기 때문에 요즘은 실수 한 프로그래밍으로 간주됩니다. 또한 외부 저장소를 나타내는 * 특정 * 경로는 제조업체 및 OS 버전에 따라 다릅니다. 그렇기 때문에 하드 코드 된 문자열 대신 메서드를 사용하여 외부 저장소의 위치를 ​​찾는 것입니다. – CommonsWare

+0

@CommonsWare : 내 LG optimus 장치에 내부 저장 장치가 있고 내부 저장소를 **/storage/sdcard0/**으로 가리키고 있습니다. 파일 관리자를 통해 확인 했으므로 sdcard0가 내부 또는 외부를 가리키는 지 혼란 스럽습니다. – Shashank

7

코드에서 /storage/sdcard0/ 경로를 가져 오는 데 Environment.getExternalStorageDirectory()을 사용할 수없는 이유는 무엇입니까? 뿐만 아니라

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

발견이 솔루션은 에뮬레이터 1 편집이다 :

  1. 이동
  2. 세트가 존경 에뮬레이터 SD의 D 카드 100 MB의 말 에뮬레이터를 편집 한 후 가상 장치 관리자를 안드로이드와려면 확인을 말할
  3. 는 저장하고 닫은 에뮬레이터 및 그것은 나를 위해 일한

시작, 응용 프로그램은 더 이상 오류를 제공하지 않으며 잘 작동한다.