2014-11-01 4 views
0

내 앱 내의 모든 클래스에서 환경 설정에 액세스 할 수 있도록 환경 설정을 저장하려고합니다. 하지만 사용자 로그인 데이터가 포함될 것이므로 내 앱 외부에서 액세스해서는 안됩니다.내 앱에 비공개로 환경 설정을 저장하지만 모든 클래스에서 액세스 할 수 있습니다.

Android 설명서에서 MODE_PRIVATE은 그렇게해야한다는 것을 이해했습니다. 하지만 MODE_PRIVATE를 사용하면 내가 만든 클래스 내에서 환경 설정에만 액세스 할 수 있습니다.

Class1.java :

.... 
SharedPreferences prefs = getPreferences(MODE_PRIVATE); 
SharedPreferences.Editor editPrefs = prefs.edit(); 
editPrefs.putString("myPref", "myValue"); 
editPrefs.commit(); 
... 

Class2.java :

... 
SharedPreferences prefs = getPreferences(MODE_PRIVATE); 
String myString = prefs.getString("myPref", " "); 
... 

나는 그것을 만든 같은 클래스 내에서 getString를 호출 할 경우,이 후에도 (myValue을 반환 응용 프로그램을 닫고 다시 넣지 않고).

같은 앱에서 다른 클래스의 getString을 호출하면 ""을 반환합니다.

감사합니다.

+0

때문에 ** 컨텍스트 ** 문제. 'final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences (ctx);'** ctx **와 동일한 Context를 전달한다. (아마도'getApplicationContext()'에서 찾을 수있다). –

답변

0

이 시도 :

PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 

문서를 참조하십시오 : http://developer.android.com/reference/android/preference/PreferenceManager.html#getDefaultSharedPreferences(android.content.Context)

+0

감사합니다. 이 방법으로 내 앱에 비공개인가? 아니면 누군가 사용 된 컨텍스트를 알고 있다면 액세스 할 수 있습니까? – jemandanders

+0

그럴 수는 없지만 루트 장치가있는 모든 사람이 SharedPreferences의 내용을 볼 수 있으므로 SharedPreferences를 사용하여 로그인 데이터를 저장하지 않는 것이 좋습니다. 데이터를 바이너리 파일에 저장하려고하면 다음을 참조하십시오. http://developer.android.com/reference/android/content/Context.html#openFileOutput(java.lang.String, int) – rickyalbert

+0

감사하지만 뿌리 박은 장치에 접근 가능한 binaray 파일? – jemandanders