为了账号安全,请及时绑定邮箱和手机立即绑定

在 Android 中单击 Firebase 通知时将数据发送到活动

在 Android 中单击 Firebase 通知时将数据发送到活动

泛舟湖上清波郎朗 2021-10-20 11:38:28
在我的应用程序中,我想使用fireBase进行通知。我想当点击通知时(当应用程序关闭时,我的意思是应用程序是background)将数据发送putExtra到mainActivity。我下面写的代码,但点击时通知(在应用程序是背景),但让我空了getStringExtra!MyNotificationManager 类:public class MyNotificationManager {    private Context mCtx;    private Uri soundUri;    private static MyNotificationManager mInstance;    public MyNotificationManager(Context context) {        mCtx = context;    }    public static synchronized MyNotificationManager getInstance(Context context) {        if (mInstance == null) {            mInstance = new MyNotificationManager(context);        }        return mInstance;    }    public void displayNotification(String title, String body) {        soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);        Intent intent = new Intent(mCtx, MainActivity.class);        intent.putExtra("fcm_notification", "Y");        PendingIntent pendingIntent = PendingIntent.getActivity(mCtx, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(mCtx, Constants.NOTIF_CHANNEL_ID)                .setSmallIcon(R.mipmap.ic_launcher)                .setContentTitle(title)                .setSound(soundUri)                .setAutoCancel(true)                .setVibrate(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400})                .setContentText(body)                .setContentIntent(pendingIntent);        NotificationManager mNotifyMgr = (NotificationManager) mCtx.getSystemService(NOTIFICATION_SERVICE);        if (mNotifyMgr != null) {            mNotifyMgr.notify(1, mBuilder.build());        }    }}当点击通知(在应用程序是后台)时,在这一行中向我显示空消息ToastString value = getIntent().getStringExtra("fcm_notification");我该如何解决?
查看完整描述

2 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

从控制台发送通知时,从“高级选项”添加自定义数据:

//img1.sycdn.imooc.com//616f8f59000101d709280372.jpg

出于某种原因,firebase 不允许密钥以 fcm 开头。您不能使用fcm_notification. 使用不同的键。

对于上图,按如下方式接收密钥:

String value = getIntent().getStringExtra("test_key");


查看完整回答
反对 回复 2021-10-20
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

尝试这个:


Intent intent = new Intent(mCtx, MainActivity.class);

intent.putExtra("EXTRA_DATA", title);

并获得:


String value = getIntent().getStringExtra("EXTRA_DATA");

最好换钥匙。此外,您似乎需要从控制台发送数据,然后将数据发送到另一个Activity.


我已经使用当前通知title来检查它是否返回标题。如果它返回了值,那么,尝试从控制台发送数据。


查看完整回答
反对 回复 2021-10-20
  • 2 回答
  • 0 关注
  • 138 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信