getIntent附加内容始终为NULL

问题描述

| 我编写了一个简单的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,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);
在我的应用程序中,这段代码仅被称为ONCE ONCE,它显示带有进度条的通知(全部正确)。 现在,当用户单击此通知时,我的应用程序将处理“ 1”事件。
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。     

解决方法

        这是方案: 方法“ 5”返回比启动活动更高的意图。 因此,当活动已关闭(终止)并且用户单击通知时,它将运行该活动的新实例,并且
getIntent()
按预期工作(附加值不是
null
)。 但是,如果活动是“正在睡眠”(它在后台)并且用户单击通知,则
getIntent()
总是返回启动该活动的最初意图,而不是返回通知意图。 因此,要在应用程序运行时捕获通知意图,只需使用此方法
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
然后覆盖
onNewIntent(Intent newintent)
。 因此,当一个应用程序首次运行时,可以使用
getIntent()
,而当应用程序从睡眠状态恢复时,可以使用
onNewIntent
。     ,        只需将此代码写在Resume()方法之上的上方即可。这就是全部。这刷新了意图-我不是很清楚,但是可以。
@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
}
    ,        问题:您正在为未决强度发送相同的请求代码。改变这个。 解决方案:设置全局变量int UNIQUE_INT_PER_CALL = 0并在创建如下所示的未决调用时进行设置。
PendingIntent contentIntent = PendingIntent.getActivity(context,UNIQUE_INT_PER_CALL,notificationIntent,0);
UNIQUE_INT_PER_CALL++; // to increment.
    ,        由于您的活动似乎已经开始,因此我认为您需要指定
FLAG_UPDATE_CURRENT
,否则
getIntent()
调用将返回上一个。看到这个答案。     ,        查看共享首选项,以传递和检索持久键/值对。