Java getIntent.remove extra不工作
在创建家庭活动时,我得到了额外的字符串Java getIntent.remove extra不工作,java,android,android-intent,android-notifications,Java,Android,Android Intent,Android Notifications,在创建家庭活动时,我得到了额外的字符串 public void showNotification(Context context,String pnrNumber){ Intent intent=new Intent(context,HomeActivity.class); intent.putExtra("PNR", pnrNumber); //To Clear the Activity Stack intent.setFla
public void showNotification(Context context,String pnrNumber){
Intent intent=new Intent(context,HomeActivity.class);
intent.putExtra("PNR", pnrNumber);
//To Clear the Activity Stack
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent contentIntent = PendingIntent.getActivity(context, uniqueNumber,intent, Intent.FLAG_ACTIVITY_CLEAR_TASK);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context).setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("TravelKhana")
.setContentText("Get food in train for the PNR:" +pnrNumber);
mBuilder.setContentIntent(contentIntent);
mBuilder.setDefaults(Notification.DEFAULT_SOUND);
mBuilder.setAutoCancel(true);
NotificationManager mNotificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(uniqueNumber, mBuilder.build());
uniqueNumber++;
}
然后在onClick中(mPnrSearch)
我删除了额外的,然后我按下后退按钮销毁了应用程序,并通过长按手机上的home(主页)按钮重新打开了它,然后额外的仍然存在,再次调用onClick(mPnrSearch),但我删除了额外的为什么会这样??我需要做些什么来解决这个问题。我认为删除后,您应该更新新的意图,只需在您的活动中实现此功能
public void onClick(View v) {
switch (v.getId()) {
case R.id.pnrSearch:
if(NetworkChecker.isConnected(getApplicationContext())) {
easyTracker.send(MapBuilder.createEvent("Home Activity","click", "PNR", null).build());
}
Intent pnrIntent = new Intent(HomeActivity.this, PnrSearch.class);
//If the user came from notification
if(v.getTag() != null){
pnrIntent.putExtra("PNR", v.getTag().toString());
v.setTag(null);
getIntent().removeExtra("PNR");
}
startActivity(pnrIntent);
break;
}
这可能是一个Android bug,也可能是一个特性,这取决于您是否希望它发生;-)这个案例没有明确的记录,但很明显,它的行为方式与您描述的一样
我最近回答了一个类似的问题,并就如何处理这个问题提出了一些建议。有关更多信息,请参阅。在我的示例中,我将值从通知传递到了onMessageReceived中的MainActivity。为什么,因为我想按通知计数打开的应用程序,请单击指定的通知id,该id是我出于分析原因通过exteras传递的值(通知打开应用程序mainactivity)。无论如何,为了确定主活动是否通过通知打开,我检查了exteras值和intent标志。我注意到,当通过通知单击打开任何应用程序时,意图标志为0,因此我将以下内容添加到我的mainactivity中
protected void onNewIntent(Intent intent) {
// TODO Auto-generated method stub
super.onNewIntent(intent);
setIntent(intent);
}
谢谢,事实就是这样,我现在已经解决了这个问题。
protected void onNewIntent(Intent intent) {
// TODO Auto-generated method stub
super.onNewIntent(intent);
setIntent(intent);
}
if(getIntent().getFlags() == 0 && getIntent().getExtras() != null){
Log.i("opened by notification only",getIntent().getStringExtra("myID"));
//rest of process...............
}