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

SharedPreference로 만든 데이터를 BroadcastReceiver에서 다룰수 있을까요?

0 추천

부팅시 자동시작 기능을 추가하려고합니다. MainActivity에서 자동시작 스위치를 키면 SharedPreference pref에 boolean값으로 true를 넣습니다. 그리고 부팅하면 A서비스와 B서비스 중 pref에 저장된 값에 따라 서비스를 실행하려고 합니다.

public class MainActivity extends AppCompatActivity {
    ...
    private StPreference pref = new StPreference(this);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

onoff = pref.getValue("onoff", false);

...

}

}

이런식으로 사용을 합니다. 

그리고 SharedPreference를 클래스로 선언해서 사용중입니다.

public class StPreference {
    private final String PREF_NAME = "com.example.knight";

    public final static String PREF_INTRO_USER_AGREEMENT = "PREF_USER_AGREEMENT";
    public final static String PREF_MAIN_VALUE = "PREF_MAIN_VALUE";

    static Context mContext;

    public StPreference(Context c) {
        mContext = c;
    }

    /******  저장하기 ******/
    //String형
    public void put(String key, String value) {
        SharedPreferences pref = mContext.getSharedPreferences(PREF_NAME, Activity.MODE_PRIVATE);
        SharedPreferences.Editor editor = pref.edit();

        editor.putString(key, value);
        editor.commit();
    }

이렇게 선언해서 쓰는데 BroadcastReceiver로 StartReceiver.class를 만들었는데 

SharedPreference를 사용할 수가 없네요. 사용할 수 있는 방법이 있을까요?

전체적인 소스가 필요하시면 올리겠습니다.

 

Bateaux (5,200 포인트) 님이 2015년 10월 28일 질문
Bateaux님이 2015년 10월 28일 수정

1개의 답변

0 추천

StartReceiver 클래스가 BroadcastReceiver를 상속했단 말씀이시죠?

PreferenceManager를 사용해서 사용해보세요

 

ex)

public class StartReceiver extends BroadcastReceiver{

  @Override
  public void onReceiver(Context context, Intent intent){
      SharedPreference pref = PreferenceManager.getDefaultSharedPreferences(context);
      String serv = pref.getString("Service","");

  }


}

 

뭐 이런식이긴 한데

SharedPreferences 를 사용 못한다는게 무슨 뜻인질 모르겟네요

eoen2eoen (330 포인트) 님이 2015년 10월 29일 답변
아 자동시작기능할 때 실행할 서비스명을 정하는게 더 나은거 같네요 감사합니다
...