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);
}