如何通过通知启动广播接收器?
我尝试了以下代码但是它并没有起作用。
通知被创建出来了,但是当我点击它时什么也没有发生。
注意:当我将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" />
getActivity
来获取一个PendingIntent
,而实际上我想要启动一个Service
(使用getService
)。这是一个很好的教训。 :) - SquonknotificationIntent.setClass(context, MyBroadcastReceiver.class);
。 - AbdullahDiaaIntent
是完全可行且更受推荐的。实际上,从 API 级别 26 开始,针对该版本及以上版本应用程序,隐式Intent
对于在清单中注册的接收器不再起作用,除了一些特定的系统广播。你仍然可以在Intent
上设置一个动作来区分接收器内的不同广播,但你将不需要在<receiver>
上使用<intent-filter>
。 - Mike M.