마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

System Service에서 SharedPreferences 사용 관련 질문

0 추천
제가 시스템 서비스에서 값을 저장해야되는데 SharedPreferences를 사용하려고 합니다.

지금 현재 테스트를 해보앗는데

Couldn't create directory for SharedPreferencesfile shared_prefs 라는 에러가 뜨더군요

서비스에서는 사용할수없나요?

값을 저장하고 읽어올수있어야되는데요 재부팅후에도 저장한 값이 유지 되어야되거든요?

아시는분 계신가요?
겨울밤 (980 포인트) 님이 2015년 2월 26일 질문

1개의 답변

0 추천
 
채택된 답변
SharedPreferences 생성을 어떻게 하셨는지 코드도 함께 올려보시기 바랍니다.
Gradler (109,780 포인트) 님이 2015년 2월 26일 답변
겨울밤님이 2015년 4월 6일 채택됨
mSharedPreferences = mContext.getSharedPreferences(FMS_AUDIO_SETTING_NAME,mContext.MODE_PRIVATE);
        meditor = mSharedPreferences.edit(); 이렇게 생성하였으며

저장하고 입력하는 함수는 다음과 같이 선언하였습니다.
    private int  getPreferences(String nameIdx){
      
     int val = mSharedPreferences.getInt(nameIdx, 10);
         return val;
    }
    

    private void setPreferences(String nameIdx, int val){       
         meditor.putInt(nameIdx, val);
        meditor.commit();
 
    }
mSharedPreferences = mContext.getSharedPreferences(FMS_AUDIO_SETTING_NAME,Context.MODE_PRIVATE);
이렇게 수정해서 한번 해보시기 바랍니다.

그리고 항목별로 Preference를 따로 나누어서 저장해야 하는 특별한 이유가 없으시다면 굳이 SharedPreference 를 private로 생성하지 마시고 Default SharedPreferences 객체를 만들어서 사용하시는 것도 방법입니다.
Default SharedPreferences 객체는 다음과 같이 만듭니다.

mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);

생성방법만 다르고 사용방법은 모두 동일합니다.
감사합니다.  
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext); 사용해도  
/SharedPreferencesImpl( 1792): Couldn't create directory for SharedPreferencesfile shared_prefs / 에러가 뜨네요..;;
그럼 의심해볼만한게 context밖에 없군요 mContext는 어디에서 어떻게 초기화 하고 계신가요? getApplicationContext()로 바꿔서도 한번 해보세요

추가로 검색 결과 삼성 단말 2.x 버전 디바이스에서 해당 버그가 있다고 하는 군요 진저브레드 이상부터는 고쳐졌다고 합니다.
혹시 이에 해당되는지도 살펴보시기 바랍니다.
https://code.google.com/p/android/issues/detail?id=14359
...