是否可以通知广播接收器?
我试过这段代码,但它不起作用。
通知已创建但当我点击它时没有任何反应。
注意:当我将notificationIntent更改为从MyBroadcastReceiver.class指向活动(如MainActivity.class)时,它可以正常工作。
通知创建:
NotificationManager notificationManager = (NotificationManager) context.getSystemService(
Context.NOTIFICATION_SERVICE);
int notificationIconId = XXXXXX
Notification notification = new Notification(
notificationIconId,
XXXXXX,
System.currentTimeMillis()
);
CharSequence contentTitle = XXXXXXX
CharSequence contentText = XXXXXX
Intent notificationIntent = new Intent(context,MyBroadcastReceiver.class);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
notificationManager.notify(1,notification);
这是BroadcastReceiver
public static class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
/*
*/
}
}
AndroidManifest.xml内部
<receiver android:name=".MyBroadcastReceiver" />
答案 0 :(得分:32)
从你的代码......
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
创建定位PendingIntent
的{{1}}时,您必须使用BroadcastReceiver
而不是getBroadcast(...)
。
请参阅PendingIntent.getBroadcast(Context context, int requestCode, Intent intent, int flags)
另外,请勿像这样创建getActivity(...)
...
Intent
这是一个明确的Intent notificationIntent = new Intent(context,MyBroadcastReceiver.class);
,它针对特定的类(通常用于启动特定的Intent
类)。
而是使用“动作”创建“广播”Activity
,例如......
Intent
您还需要为清单的Intent notificationIntent = new Intent(MyApp.ACTION_DO_SOMETHING);
部分指定<intent-filter>
部分。