2011-05-10 5 views
20

디버깅을 위해 내 응용 프로그램의 공유 환경 설정 파일에 액세스해야합니다. 내가 아는 한 내가/data/...에서이 파일을 찾아야하지만 누락 된 권한을 통해/data 폴더에 액세스 할 수 없다. 이게 정상인가? 파일에 계속 액세스하는 방법은 없나요? (어쩌면 응용 프로그램 내부에서 그것을 비난하는 것을 제외하고?) 전화가 뿌리가 아니며 또한 그것을 뿌리 내리고 싶지 않습니다. 힌트를 보내 주셔서 감사합니다!Android : SharedPreferences 파일보기?

+0

여기에 내 대답은 도움이 될 수 http://stackoverflow.com/a/40464820/5868421 –

답변

17

이전에이 문제가 발생했습니다 (파일 시스템에 대한 루트 권한이 없지만 응용 프로그램 데이터 폴더에 대한 액세스가 필요함). 루팅 된 장치 또는 ADP1과 같은 개발자 장치가 없으면 에뮬레이터에서 응용 프로그램을 실행 한 다음 Eclipse 또는 DDMS의 "파일 탐색기"에서 파일에 액세스 해보십시오.

EDIT # 1 : sharedPreferences의 getAll 함수를 사용하여 파일에 저장하려고하면 샘플을 함께 보낼 수 있는지 확인합니다.

EDIT # 2 : 예제 코드는 그물 주위의 무작위 샘플로 만들어졌지만 아마도 최선의 방법은 아니지만 테스트를 거쳤습니다. 그것은 당신의 sdcard의 루트에 파일을 씁니다. 당신이 매니페스트

private void saveSharedPreferences() 
{ 
    // create some junk data to populate the shared preferences 
    SharedPreferences prefs = getSharedPreferences("MyPrefs", MODE_PRIVATE); 
    SharedPreferences.Editor prefEdit = prefs.edit(); 
    prefEdit.putBoolean("SomeBooleanValue_True", true); 
    prefEdit.putInt("SomeIntValue_100", 100); 
    prefEdit.putFloat("SomeFloatValue_1.11", 1.11f); 
    prefEdit.putString("SomeStringValue_Unicorns", "Unicorns"); 
    prefEdit.commit(); 

    // BEGIN EXAMPLE 
    File myPath = new File(Environment.getExternalStorageDirectory().toString()); 
    File myFile = new File(myPath, "MySharedPreferences"); 

    try 
    { 
     FileWriter fw = new FileWriter(myFile); 
     PrintWriter pw = new PrintWriter(fw); 

     Map<String,?> prefsMap = prefs.getAll(); 

     for(Map.Entry<String,?> entry : prefsMap.entrySet()) 
     { 
      pw.println(entry.getKey() + ": " + entry.getValue().toString());    
     } 

     pw.close(); 
     fw.close(); 
    } 
    catch (Exception e) 
    { 
     // what a terrible failure... 
     Log.wtf(getClass().getName(), e.toString()); 
    } 
} 

소스에

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

설정이 있는지 확인 OneTwoThree

+0

불행하게도 내 응용 프로그램은, 무선 랜과 무선 랜 에뮬레이터에서 사용할 수 없습니다되지 포함? –

+0

내가, 내가 같은 생각을 가지고 있어요, 모든 작업 O를, 내가 그것을 시도 할 것이다하지 않는 또 다른 – snctln

+0

snctln 봐 걸릴 것입니다, 무선 랜 에뮬레이터로 볼 수 있습니다 믿지 않는 어떤 샘플은 ;-) –

1

루핑되지 않은 휴대 전화에서는/데이터 폴더에 액세스하는 좋은 방법이 없습니다.

SharedPreferences myPrefs = this.getSharedPreferences("prefs", MODE_WORLD_READABLE); 

을 한 후 바탕 화면에 파일을 가져 adb pull를 사용해보십시오 : 당신은 MODE_WORLD_READABLE 그래서 등으로 파일을 만들 시도 할 수 있습니다.

adb pull /data/data/<packagename>/shared_prefs/prefs.xml

하지만 귀하의 마일리지가 다를 수 있습니다.

+0

흠 실제로 파일을 어떻게 만듭니 까? xml을 사용하여 환경 설정을 지정하고 android에서 저장소를 처리합니다. 코드를 통해 값을 검색하면됩니다. 힌트와 답장을 보내 주셔서 감사합니다 .-) –

+0

파일은 환경 설정 프레임 워크에서 자동으로 생성됩니다. 코드의 데이터에 액세스해야하는 경우 http : // developer에 설명 된 환경 설정 프레임 워크를 사용할 수 있어야합니다. .android.com/guide/topics/data/data-storage.html # pref – Femi

+0

감사합니다 femi는 작동하지만 어떻게 든 잘못된 키 또는 Android 스토어를 예상보다 다른 것으로 사용하고 있습니다 ... 그래서 내가보고 싶어합니다. 모든 값/파일 자체에서) : 편집 : 잘 getAll() 메토가 있습니다. –