我在通知到达时尝试向片段发送广播。我想我已经做好了一切,但它不起作用。你能告诉我我做错了什么吗?这是我发送广播的方式:
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);
}
答案 0 :(得分:1)
写下这一行
LocalBroadcastManager.getInstance(getApplicationContext).sendBroadcast(intent2);
而不是
sendBroadcast(intent2);
答案 1 :(得分:1)
不确定您是如何使用该应用的。但你需要做..
LocalBroadcastManager.getInstance(上下文).sendBroadcast(意向);
在onCreate()和onDestroy()方法中执行注册和取消注册操作。