无法接收广播

时间:2016-05-11 05:48:58

标签: android

我正在从我的服务部门发送广播并尝试接收我的活动,但我看不到它正在接收。有人可以建议我做错了什么。我看到onResume被调用但看不到标志

Log.d("InchooTutorial", msg_for_me);

登录。

服务代码:

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 个答案:

答案 0 :(得分:1)

如果您使用LocalBroadcastManager发送广播,则需要注册广告。

写入注册:

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

取消注册:

LocalBroadcastManager.getInstance(this).unregisterReceiver(this.mReceiver);

答案 1 :(得分: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