当前位置: 首页 > 知识库问答 >
问题:

如何在我的应用程序收到广播消息时创建通知

葛威
2023-03-14
@Override
public void onReceive(Context context, Intent intent) {

    Toast.makeText(context, "EBR triggered", Toast.LENGTH_LONG).show();

//以下代码不起作用。我从stackOverflow//PendingIntent PendingIntent=PendingIntent.getActivity(context,1,intent,0)中复制它;

    Notification.Builder builder = new Notification.Builder(context);

    builder.setAutoCancel(false);
    builder.setTicker("Ticker text");
    builder.setContentTitle("Content of Notification");
    builder.setContentText("You have a new message");
    builder.setSmallIcon(R.mipmap.ic_launcher);
    builder.setContentIntent(pendingIntent);
    builder.setOngoing(true);
    builder.setSubText("This is subtext...");  
    builder.setNumber(100);
    builder.build();

    // add as notification
    NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    manager.notify(0, builder.build());


}


}

没有错误,我希望有一个通知图标出现时,广播接收,但什么也没有发生。

共有1个答案

郝昊天
2023-03-14

下面是一个简单的广播接收示例。

应用程序1(发件人)

Intent intent = new Intent("MY_NOTIFICATION");
intent.setComponent(
    new ComponentName("com.example.stackoverflow", "com.example.stackoverflow.MyReceiver")
);
intent.putExtra("data","Notice me senpai!");
sendBroadcast(intent);

应用程序2(接收器)

...
<receiver android:name=".MyReceiver">
    <intent-filter>
        <action android:name="MY_NOTIFICATION"/>
    </intent-filter>
</receiver>
public void onReceive(Context context, Intent intent) {
        String data = intent.getStringExtra("data");
        Toast.makeText(context, data, Toast.LENGTH_LONG).show();

        NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
        NotificationChannel channel = new NotificationChannel("CHANNEL_ID", "name", NotificationManager.IMPORTANCE_DEFAULT);
        channel.setDescription("description");
        notificationManager.createNotificationChannel(channel);

        NotificationCompat.Builder builder = new NotificationCompat.Builder(context, "CHANNEL_ID")
                .setSmallIcon(R.drawable.ic_launcher_background)
                .setContentTitle("textTitle")
                .setContentText(data)
                .setPriority(NotificationCompat.PRIORITY_DEFAULT);
        notificationManager.notify(1, builder.build());
    }
 类似资料:
  • 把我的城市飞艇升级到7.2。没有编译错误和应用程序运行良好,直到它收到一个推送消息。此时,它将崩溃,出现以下堆栈跟踪: 当我检查类是否可见(Cmd-O)并开始键入时,类立即出现。 有人遇到过这个吗?我不知道怎么修好它。多谢了。

  • 我刚刚实现了一个GCM应用程序,它在GCM消息到达时显示通知。当消息到达时,如何启动应用程序?和viber一样。当消息到达时,你得到一个弹出框。 编辑: 非常感谢您的帮助,但我想你们大多数人都解释过需要用户单击通知才能启动应用程序。无论前台是什么应用程序,甚至当应用程序处于后台或基态时,我都需要在GCM消息到达后立即自动启动活动。 这是我的GCMIntentService代码:

  • 我试图在Android中创建一个应用程序,仅由1个广播接收器(而不是其他)组成。 广播接收器应该简单地捕捉广播(例如收到的短信,记录信息并完成)。然而,我注意到广播没有被接收器捕捉到,除非我指出我有主活动,如下Androidanifest.xml将显示: 我甚至不需要在应用程序中有一个活动类。此外,如果我在意图过滤器中删除android.intent.category.LAUNCHER或andro

  • SQL错误[42601]:在“”后面发现意外标记“(标签CHAR(30),值VARCHAR(1))”。所需的标记可能包括:“E@DateType TABLE”..SQLCODE=-104,SQLSTATE=42601,Driver=4.21.29

  • 我正在使用FCM进行通知。FCM在从Firebase数据库创建数据时被触发。我收到了第一条信息。在此之后,不会接收到其他连续的消息。我在本地环境下运行这个。问题是由于以下消息“未配置计费帐户。外部网络无法访问,配额受到严重限制。配置计费帐户以消除这些限制”或任何其他问题造成的。我是否需要进入接收消息的计费计划。在测试环境中工作,这是不转移到计费计划的原因。如果问题与计费计划无关,可以有人指出代码的

  • 我可能已经阅读了所有其他与此相关的SO线程,但我找不到答案,而且在Android监视器中也没有日志跟踪。有人对此有提示吗?