Android getStringExtra()中的Null值
我正在尝试使用firebase消息服务构建通知服务。问题是,当我单击通知时,它会将我带到正确的目的地,但我的应用程序栏标题没有正确更新。我在intent中传递用户名,但在intent的getExtra()中,它返回null。 我获得了正确的用户ID,但没有获得正确的名称。 我的notification builder代码如下所示:Android getStringExtra()中的Null值,android,firebase,android-intent,firebase-cloud-messaging,android-pendingintent,Android,Firebase,Android Intent,Firebase Cloud Messaging,Android Pendingintent,我正在尝试使用firebase消息服务构建通知服务。问题是,当我单击通知时,它会将我带到正确的目的地,但我的应用程序栏标题没有正确更新。我在intent中传递用户名,但在intent的getExtra()中,它返回null。 我获得了正确的用户ID,但没有获得正确的名称。 我的notification builder代码如下所示: NotificationCompat.Builder mBuilder = new NotificationCompat.Builder
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(R.drawable.chitchat_icon)
.setContentTitle(notification_title)
.setAutoCancel(true)
.setContentText(notification_message);
Intent resultIntent = new Intent(click_action);
resultIntent.putExtra("user_id", user_id);
resultIntent.putExtra("user_name",user_name);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addNextIntentWithParentStack(resultIntent);
stackBuilder.addParentStack(MainActivity.class);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(
0,
PendingIntent.FLAG_UPDATE_CURRENT
);
mBuilder.setContentIntent(resultPendingIntent);
const fromUser = admin.database().ref(`/message_notifications/${user_id}/${notification_id}`).once('value');
return fromUser.then(fromUserResult => {
const from_user_id = fromUserResult.val().from;
const message = fromUserResult.val().body;
console.log('You have new notification from : ', from_user_id);
const userQuery = admin.database().ref(`/Users/${from_user_id}/name`).once('value');
return userQuery.then(userResult => {
const userName = userResult.val();
const deviceToken = admin.database().ref('/Users/'+ user_id +'/device_token').once('value');
return deviceToken.then(result => {
const token_id = result.val();
const payload = {
notification: {
title: userName,
body: message,
icon: "default",
click_action : "com.example.chitchat_TARGET_MESSAGE_NOTIFICATION"
},
data : {
user_id : from_user_id,
user_name: userName
}
};
}
我正在获取Intent Extra并将其设置为动作栏的标题:
//change in postion
mChatUser = getIntent().getStringExtra("user_id");
String userName = getIntent().getStringExtra("user_name");
...
mTitleView.setText(userName);
生成通知的firebase js函数如下所示:
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(R.drawable.chitchat_icon)
.setContentTitle(notification_title)
.setAutoCancel(true)
.setContentText(notification_message);
Intent resultIntent = new Intent(click_action);
resultIntent.putExtra("user_id", user_id);
resultIntent.putExtra("user_name",user_name);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addNextIntentWithParentStack(resultIntent);
stackBuilder.addParentStack(MainActivity.class);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(
0,
PendingIntent.FLAG_UPDATE_CURRENT
);
mBuilder.setContentIntent(resultPendingIntent);
const fromUser = admin.database().ref(`/message_notifications/${user_id}/${notification_id}`).once('value');
return fromUser.then(fromUserResult => {
const from_user_id = fromUserResult.val().from;
const message = fromUserResult.val().body;
console.log('You have new notification from : ', from_user_id);
const userQuery = admin.database().ref(`/Users/${from_user_id}/name`).once('value');
return userQuery.then(userResult => {
const userName = userResult.val();
const deviceToken = admin.database().ref('/Users/'+ user_id +'/device_token').once('value');
return deviceToken.then(result => {
const token_id = result.val();
const payload = {
notification: {
title: userName,
body: message,
icon: "default",
click_action : "com.example.chitchat_TARGET_MESSAGE_NOTIFICATION"
},
data : {
user_id : from_user_id,
user_name: userName
}
};
}
有人能帮我解决这个问题吗?找不到问题。
谢谢
更新:
我还想告诉大家,如果有两个不同的设备,它可以正常工作,但如果我登录并发送通知注销和接收通知,它就无法检索用户名
您确定此处的用户名不为空吗<代码>resultent.putExtra(“用户名”,用户名)以及如何设置用户名的值?如果您在java脚本代码中看到我在data payloadyah中发送用户名,我看到您的JSON,我的意思是您在android中获取用户名的代码在哪里。如果你发布整个NotifcationService的代码可能会更好。我还没有发布那部分。让我编辑我的帖子。请检查编辑