从通知接收广播

时间:2016-05-06 18:34:13

标签: android push-notification notifications

我在通知到达时尝试向片段发送广播。我想我已经做好了一切,但它不起作用。你能告诉我我做错了什么吗?这是我发送广播的方式:

if (code == 1) {

                int id = Integer.parseInt(data[1]);
                int idMessage = Integer.parseInt(data[2]);
                String user = data[3];
                String messageChat = data[4];
                Intent intent2 = new Intent(arg0, ChatMainActivity.class);
                intent2.putExtra("alert", true);
                intent2.putExtra("userId", id);
                intent2.putExtra("messageId", idMessage);
                intent2.putExtra("userName", user);
                intent2.putExtra("message", messageChat);
                intent2.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
                intent2.setAction("mac.baseline.baselinemobile.BroadcastReceiver");
                sendBroadcast(intent2);

                PendingIntent pIntent = PendingIntent.getBroadcast(arg0, 0,
                        intent2, 0);

                boolean isRunning = isApplicationRunning();

                if (isRunning) {
                    intent2 = new Intent(arg0, AlertReceiver.class);
                    pIntent = PendingIntent.getBroadcast(arg0, 0, intent2, 0);
                }
                Notification notification = new NotificationCompat.Builder(arg0)
                        .setContentTitle("Baseline™")
                        .setContentText("Nowa wiadomość od: " + user + ": " + messageChat)
                        .setSmallIcon(R.drawable.alert2)
                        .setTicker(newItems)
                        .setContentIntent(pIntent).build();

这就是我在片段中收到它的方式:

private BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.e(TAG, "onReceive: works!");
        }

};
public void onResume()
{
    super.onResume();
    IntentFilter filter = new IntentFilter();
    filter.addAction("mac.baseline.baselinemobile.BroadcastReceiver");
    LocalBroadcastManager.getInstance(getActivity()).
            registerReceiver(mReceiver, filter);
}

public void onPause()
{
    super.onPause();
    LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(mReceiver);
}

2 个答案:

答案 0 :(得分:1)

写下这一行

LocalBroadcastManager.getInstance(getApplicationContext).sendBroadcast(intent2);

而不是

sendBroadcast(intent2);

答案 1 :(得分:1)

不确定您是如何使用该应用的。但你需要做..

  

LocalBroadcastManager.getInstance(上下文).sendBroadcast(意向);

在onCreate()和onDestroy()方法中执行注册和取消注册操作。