2016-09-15 2 views
0

앱 루트 폴더를 가져 오는 데 문제가 있습니다. 문제는 마쉬멜로 에뮬레이터에서 발생합니다.Android 앱 루트 폴더 받기

데이터/사용자/0/com.android.appname/파일/

그것을해야한다 :

데이터/데이터 내가 context.getFilesDir()을 할 때 그것은 잘못된 경로를 반환

누가 왜 이런 일이 어떻게 나 응용 프로그램의 루트 폴더에 대한 권리 경로를 얻을 수있는 다른 방법을 해결하기 위해 알고 /com.android.appname/files/?

+0

"잘못된 경로를 반환합니다."- 특히 Android의 최신 버전에서는 완벽하게 정상적으로 보입니다. 무엇이 틀렸다고 생각하니? – CommonsWare

+0

내 앱이 파일을 저장 한 폴더가 두 번째 파일이기 때문입니다. –

+0

그리고 이것을 얼마나 정확하게 결정합니까? 파일 시스템은'adb 쉘 '과 같은 도구를 통해 볼 때 다른 모습을 갖습니다. – CommonsWare

답변

1

/data/user/0/com.android.appname/files/getFilesDir()에 의해 반환되는 완벽하게 유효한 경로입니다. 해당 디렉토리는 앱에서 사용할 수 있습니다.

adb는 내 앱이 아닙니다. 파일 시스템에 대한 관점은 다릅니다.

getFilesDir()의 정확한 위치는 실제 파일 시스템에 매핑 — 또는 adb 같은 도구가 볼 곳 — 사용자 계정 앱을 실행하는 OS 버전 등 여러 가지 기준에 따라 달라질 수는 (기억 : 안드로이드는 여러 지원 사용자!) 및 장치 제조업체/사용자 지정 ROM 변경이 포함될 수 있습니다.

+0

내가 원하는 것은 내 응용 프로그램의 SQLite 데이터베이스를 루트 폴더에서 SDCard로 복사하는 것입니다. 'database' 폴더는 두 번째 경로에 있는데, 앱이 찾을 수없는 첫 번째 경로에 있습니다. 당신이 말하는 것을 이해하지만 앱이 그 경로에서 데이터베이스를 찾을 수는 없습니다. 왜 다른 응용 프로그램이 "올바른"것이라면 응용 프로그램이 데이터베이스를/data/data ... 폴더에 만드는 이유를 말해 줄 수 있습니까? –

+0

@ AlbertoMéndez : 둘 다 똑같은 장소에 매핑되기 때문에 둘 다 정확합니다. – CommonsWare

+0

그래, 나는 그것을 생각하지만, 그것을하지 않는 것 같습니다, 왜냐하면 그것은 catch ('IOException') 데이터베이스 파일을 얻으려고 노력하고 메시지를 던졌습니다, '파일을 찾을 수 없습니다.'. 그것이 내가 여기 왔던 이유입니다. –