点击通知时应用程序崩溃

问题描述 投票:1回答:1

我创建了一个有聊天功能的应用程序,当用户发送消息时,它会向接收者显示一个通知。

现在,我想,当用户收到通知并点击它时,它将打开所有功能的活动。

我做的通知看起来像这样。

public void notifyThis(String title, String message, String uniqueID, String var1, String var2, String var3) {

        Intent intent = new Intent(this, ChatActivity.class);

        intent.putExtra("ChatID",var1);
        intent.putExtra("ReceiverID",var2);
        intent.putExtra("SenderID",var3);

        int RandomID = (int) System.currentTimeMillis();

        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);

        NotificationCompat.Builder groupBuilder = new NotificationCompat.Builder(this,"191919")
                .setSmallIcon(R.drawable.ic_launcher_custom_background)
                .setGroup(uniqueID)
                .setGroupSummary(true);

        NotificationCompat.Builder messageBuilder = new NotificationCompat.Builder(this, "191919")
                .setSmallIcon(R.drawable.ic_launcher_custom_background)
                .setContentTitle(title)
                .setContentText(message)
                .setContentIntent(pendingIntent)
                .setPriority(NotificationCompat.PRIORITY_DEFAULT)
                .setGroup( uniqueID )
                .setAutoCancel( true );

        NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
        notificationManager.notify(uniqueID,0, groupBuilder.build());
        notificationManager.notify(RandomID, messageBuilder.build());

    }

到目前为止,一切都很正常,当我调试时,我看到: var1, var2, var3 不是空的,是存在的。

我的问题是,当我点击通知时,应用程序崩溃,因为它说。

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference

但我不明白为什么它的SenderID是空的 如果通知的意图是用值发送的,如果我这样读它。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate( savedInstanceState );

        setContentView( R.layout.activity_chat );

        getSupportActionBar().hide();

        auth = FirebaseAuth.getInstance();

        chatID = getIntent().getExtras().getString( "ChatID" );

        receiverID = getIntent().getExtras().getString( "ReceiverID" );
        SenderID = getIntent().getExtras().getString("SenderID");

        if (SenderID.equals( auth.getUid() )) { HERE I GET THE ERROR SAYING SenderID IS NULL
            NotMyID = receiverID;
        } else {
            NotMyID = SenderID;
        }
    }

我是不是读错了什么?根据我的理解,我在我的通知意图中发送了SenderID,然后我 getExtras 从这个意图来看,它应该是工作的。

谢谢你

java android firebase-cloud-messaging android-notifications android-pendingintent
1个回答
1
投票

只要对notifyThis功能做一些修改。

PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
© www.soinside.com 2019 - 2024. All rights reserved.