2016-04-28 6 views
0

長い時間のlurker - 初めてのポスター!私は誰かが私の小さな問題を助けることができれば幸いです。PreferenceFragmentのsendBroadcast(文字列アクション)の問題

私はその後、繰り返しアラームサービスを設定するために、私のAlarmReceiverにsendBroadcastを()発動すべきであるOnSharedPreferenceChangeListenerを実装PreferenceFragmentを持っています。 リスナーはonChangeイベントを登録して、getActivity()に送信します。sendBroadcast() - 残念ながら、ブロードキャストは私のAlarmReceiverによって捕捉されることはありません。

ここは私の設定です。

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 
    Preference preference = findPreference(key); 
    if (preference instanceof CheckBoxPreference) { 
     //Intent alarmReceiverIntent = new Intent(getActivity(), AlarmReceiver.class); 
     Intent alarmReceiverIntent = new Intent(getString(R.string.ACTION_SET_NOTIFICATIONS)); 
     //alarmReceiverIntent.setAction(getActivity().getString(R.string.ACTION_SET_NOTIFICATIONS)); 
     getActivity().getApplicationContext().sendBroadcast(alarmReceiverIntent); 
    } 

AlarmReceiver:最後に

public class AlarmReceiver extends BroadcastReceiver {   
@Override 
public void onReceive(Context context, Intent intent) { 
    //This is just to see if the AlarmReceiver has caught the broadcast. 
    Log.v(TAG, "We are in the receiver - yay"); 

のAndroidManifest.xmlを

<receiver 
    android:name=".AlarmReceiver" 
    android:enabled="true"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
    <intent-filter> 
     <action android:name="dk.aau.student.b211.sleepattention.SET_NOTIFICATIONS" /> 
    </intent-filter> 
</receiver> 

私は:)

+0

「ACTION_SET_NOTIFICATIONS」を確認してください。 –

答えて

0

わかりましたは助けることができるそこに誰かがあることを願っています - ので、私が見つけたが、溶液! ブロードキャストの受信に問題がある場合は、BroadCastReceiverを受信者として登録する必要があります。これは私の問題を解決しました:) onPauseで登録を解除してonResumeに登録することを忘れないでください。

など。

@Override 
public void onResume() { 
    super.onResume(); 
    sharedPreferences.registerOnSharedPreferenceChangeListener(this); 
    getActivity().registerReceiver(alarmReceiver, new IntentFilter(getString(R.string.ACTION_SET_NOTIFICATIONS))); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    sharedPreferences.unregisterOnSharedPreferenceChangeListener(this); 
    getActivity().unregisterReceiver(alarmReceiver); 
}