gpt4 book ai didi

android - getIntent() Extras 总是 NULL

转载 作者:IT老高 更新时间:2023-10-28 13:11:58 31 4
gpt4 key购买 nike

我编写了一个简单的 Android 应用程序,显示如下自定义通知:

Context context = getApplicationContext();          
NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notification notification = new Notification( R.drawable.icon, title, System.currentTimeMillis());
Intent notificationIntent = new Intent( context, this.getClass());
notificationIntent.putExtra("com.mysecure.lastpage", "SECURECODE");
PendingIntent pendingIntent = PendingIntent.getActivity( context , 0, notificationIntent, 0);
notification.flags = notification.flags | Notification.FLAG_ONGOING_EVENT;
notification.contentView = new RemoteViews(context.getPackageName(), R.layout.notifypbar);
notification.contentIntent = pendingIntent;

notification.contentView.setTextViewText(R.id.notifypb_status_text, text);
notification.contentView.setProgressBar(R.id.notifypb_status_progress, 100, (int)(100*progress), false);

manager.notify(104, notification);

这段代码在我的应用程序中只调用一次,它会显示一个带有进度条的通知(全部正确)。

现在,当用户单击此通知时,我的应用程序将处理 onResume 事件。

public void onResume()
{
super.onResume();
// TODO: Extras è SEMPRE NULL!!! impossibile!
Intent callingintent = getIntent();
Bundle extras = callingintent.getExtras();

但 extras 始终为 NULL!

我尝试过以下任意组合:

notificationIntent.putExtra("com.mysecure.lastpage", "SECURECODE");

Bundle extra = new Bundle();
extra.putString(key, value);
notificationIntent.putExtra(extra);

但 getIntent().getExtras() 总是返回 NULL。

最佳答案

这是场景:
getIntent() 方法返回第一个 Intent 而不是启动 Activity 。

因此,当 Activity 关闭(终止)并且用户单击通知时,它将运行 Activity 的新实例并且 getIntent() 可以按预期工作(Extras 是 不是 null)。

但如果 Activity “休眠”(它在后台)并且用户点击通知,getIntent() 总是返回启动 Activity 的第一个 Intent ,而不是通知 Intent 。

所以要在应用程序运行时捕获通知 Intent ,只需使用这个

notificationIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);

然后覆盖onNewIntent(Intent newintent).

所以当应用程序第一次运行时,getIntent() 可以使用,当应用程序从 sleep 状态恢复时,onNewIntent 工作。

关于android - getIntent() Extras 总是 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6352281/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com