Android Intent.putExtra(键、值)不起作用
我得到了一个Android Intent.putExtra(键、值)不起作用,android,firebase-realtime-database,android-bundle,Android,Firebase Realtime Database,Android Bundle,我得到了一个ValueEventListener query.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { final Intent intent = new Intent(BackgroundService.this, NextActivity.c
ValueEventListener
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
final Intent intent = new Intent(BackgroundService.this, NextActivity.class);
Task<String> t=genrate();//not null
t.addOnCompleteListener(new OnCompleteListener<String>() {
@Override
public void onComplete(@NonNull Task<String> task) {
if (task.isSuccessful()) {
intent.putExtra("token",task.getResult());
}
} });
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(BackgroundService.this, 0, intent, 0);
mBuilder.setContentIntent(pendingIntent).setAutoCancel(true);
mBuilder.setVisibility(VISIBILITY_SECRET);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(BackgroundService.this);
notificationManager.notify(121, mBuilder.build());
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
返回null
有什么问题吗?您需要此标志:
pendingent.flag\u UPDATE\u CURRENT
在您的pendingent
更改:
PendingIntent pendingIntent = PendingIntent.getActivity(BackgroundService.this, 0, intent, 0);
致:
您需要此标志:
pendingent.flag\u UPDATE\u CURRENT
在您的pendingent
更改:
PendingIntent pendingIntent = PendingIntent.getActivity(BackgroundService.this, 0, intent, 0);
致:
addValueEventListener()
是异步的。您只能在onDataChange()
中获得结果。将显示通知的代码移动到单独的方法中,并在onDataChange()
中调用它
addValueEventListener()
是异步的。您只能在onDataChange()
中获得结果。将显示通知的代码移动到单独的方法中,并在onDataChange()
中调用它
您没有调用
startActivity(intent)代码>
query.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
最终意图=新意图(BackgroundService.this、NextActivity.class);
Taskt=genrate();//不为空
t、 addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull TaskTask){
if(task.issusccessful()){
intent.putExtra(“token”,task.getResult());
星触觉(意向);
}
}
});
intent.setFlags(intent.FLAG_ACTIVITY_NEW_TASK | intent.FLAG_ACTIVITY_CLEAR_TASK);
pendingent pendingent=pendingent.getActivity(BackgroundService.this,0,intent,0);
mBuilder.setContentIntent(pendingIntent).setAutoCancel(true);
mBuilder.setVisibility(VISIBILITY\u SECRET);
NotificationManagerCompat notificationManager=NotificationManagerCompat.from(BackgroundService.this);
notificationManager.notify(121,mBuilder.build());
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
您没有调用startActivity(intent);
query.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
最终意图=新意图(BackgroundService.this、NextActivity.class);
Taskt=genrate();//不为空
t、 addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull TaskTask){
if(task.issusccessful()){
intent.putExtra(“token”,task.getResult());
星触觉(意向);
}
}
});
intent.setFlags(intent.FLAG_ACTIVITY_NEW_TASK | intent.FLAG_ACTIVITY_CLEAR_TASK);
pendingent pendingent=pendingent.getActivity(BackgroundService.this,0,intent,0);
mBuilder.setContentIntent(pendingIntent).setAutoCancel(true);
mBuilder.setVisibility(VISIBILITY\u SECRET);
NotificationManagerCompat notificationManager=NotificationManagerCompat.from(BackgroundService.this);
notificationManager.notify(121,mBuilder.build());
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
您的任务是否执行。getResult()
返回字符串?如果是,请在第二个活动中尝试此操作
Bundle extras = getIntent().getExtras();
if (extras != null) {
String result = extras.getString("token");
System.out.println("yeah"+result);
}
您的task.getResult()
是否返回字符串?如果是,请在第二个活动中尝试此操作
Bundle extras = getIntent().getExtras();
if (extras != null) {
String result = extras.getString("token");
System.out.println("yeah"+result);
}
您似乎没有在任何地方使用此意图,其中此行:pendingent pendingent=pendingent.getActivity(BackgroundService.this,0,Intent,0);
您似乎没有在任何地方使用此意图:pendingent pendingent=pendingent.getActivity(BackgroundService.this,0,Intent,0)是的,我检查了日志,一切都很好,顺便说一句,令牌是一个长字符串有多长?什么是task.getResult()
?@someone如果没有该标志,您会得到额外的吗?是的,出于调试原因,我使用该标志来更新挂起的意图eah,我检查了日志,所有都很好,顺便说一句,token是一个长字符串多长?什么是任务。getResult()
?@someone如果没有该标志,您会得到额外的吗?是的,出于调试原因,我使用该标志来更新挂起的意图
private void showNotification(Intent intent) {
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(BackgroundService.this, 0, intent, 0);
mBuilder.setContentIntent(pendingIntent).setAutoCancel(true);
mBuilder.setVisibility(VISIBILITY_SECRET);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(BackgroundService.this);
notificationManager.notify(121, mBuilder.build());
}
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
final Intent intent = new Intent(BackgroundService.this, NextActivity.class);
Task < String > t = genrate(); //not null
t.addOnCompleteListener(new OnCompleteListener < String > () {
@Override
public void onComplete(@NonNull Task < String > task) {
if (task.isSuccessful()) {
intent.putExtra("token", task.getResult());
startActivity(intent);
}
}
});
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(BackgroundService.this, 0, intent, 0);
mBuilder.setContentIntent(pendingIntent).setAutoCancel(true);
mBuilder.setVisibility(VISIBILITY_SECRET);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(BackgroundService.this);
notificationManager.notify(121, mBuilder.build());
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Bundle extras = getIntent().getExtras();
if (extras != null) {
String result = extras.getString("token");
System.out.println("yeah"+result);
}