2016-05-11 3 views
0

Я отправляю трансляцию с моей службы и пытаюсь получить в своей работе, но я не вижу ее получения. Может ли кто-нибудь предложить, если я делаю что-то неправильно. Я вижу onResume, звонящего, но не вижу флагаНевозможно принять широковещательную рассылку

Log.d("InchooTutorial", msg_for_me); 

Service Code:

Intent sendableIntent = new Intent("SOTGSAMReceiver"); 
sendableIntent.putExtra("kicked", prefs.getSurveySubmittedStatus(context));      
LocalBroadcastManager.getInstance(AcrService.this).sendBroadcast(sendableIntent; 

активность Код:

// Get Broadcast 
    @Override 
    protected void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 
     Log.d("InchooTutorial", "Inside onResume"); 
     IntentFilter intentFilter = new IntentFilter("SOTGSAMReceiver"); 

     mReceiver = new BroadcastReceiver() { 

      @Override 
      public void onReceive(Context context, Intent intent) { 
       // extract our message from intent 
       String msg_for_me = intent.getStringExtra("kicked"); 
       // log our message value 
       Log.d("InchooTutorial", msg_for_me); 

      } 
     }; 
     // registering our receiver 
     this.registerReceiver(mReceiver, intentFilter); 
    } 

    @Override 
    protected void onPause() { 
     // TODO Auto-generated method stub 
     super.onPause(); 
     // unregister our receiver 
     this.unregisterReceiver(this.mReceiver); 
    } 
+2

Когда вы используете «LocalBroadcastManager» для отправки широковещательных сообщений, вам также необходимо зарегистрировать приемник с помощью «LocalBroadcastManager». –

ответ

1

Если вы используете LocalBroadcastManager для отправки трансляции необходимо зарегистрироваться с ним.

Запись для регистра:

LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, intentFilter); 

И UNREGISTER:

LocalBroadcastManager.getInstance(this).unregisterReceiver(this.mReceiver); 
0
public class BroadcastService extends Service { 
private final static String TAG = "BroadcastService"; 

public static final String COUNTDOWN_BR = "com.sixmod.com.sixmod.MyReceiver"; 
Intent bi = new Intent(COUNTDOWN_BR); 
Intent ci = new Intent(COUNTDOWN_BR); 

CountDownTimer cdt = null; 

@Override 
public void onCreate() { 
    super.onCreate(); 

    Log.i(TAG, "Starting timer..."); 

    cdt = new CountDownTimer(180000, 1000) { 
     @Override 
     public void onTick(long millisUntilFinished) { 

      Log.i(TAG, "Countdown seconds remaining: " + millisUntilFinished/1000); 
      bi.putExtra("countdown", millisUntilFinished); 
      sendBroadcast(bi); 
     } 

     @Override 
     public void onFinish() { 
      ci.putExtra("countdownFinish", 1); 
      sendBroadcast(ci); 
      Log.i(TAG, "Timer finished"); 
     } 
    }; 

    cdt.start(); 
} 

@Override 
public void onDestroy() { 

    cdt.cancel(); 
    Log.i(TAG, "Timer cancelled"); 
    super.onDestroy(); 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    return super.onStartCommand(intent, flags, startId); 
} 

@Override 
public IBinder onBind(Intent arg0) { 
    return null; 
} 

}

В деятельности

private BroadcastReceiver br = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      updateGUI(intent); // or whatever method used to update your GUI fields 
     } 
    }; 

@Override 
    public void onResume() { 
     super.onResume(); 
     getActivity().registerReceiver(br, new IntentFilter(BroadcastService.COUNTDOWN_BR)); 
     Log.e("Receiver Registered", "Registered broacast receiver"); 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     getActivity().unregisterReceiver(br); 
     Log.e("Unregistered", "Unregistered broacast receiver"); 
    } 

    @Override 
    public void onStop() { 
     try { 
      getActivity().unregisterReceiver(br); 
     } catch (Exception e) { 
      // Receiver was probably already stopped in onPause() 
     } 
     super.onStop(); 
    } 
    @Override 
    public void onDestroy() { 

     super.onDestroy(); 
    } 

private void updateGUI(Intent intent) { 
     if (intent.getExtras() != null) {// here you fetch the data 
Смежные вопросы