我有三个活动A,B和C.让我们说任务在堆栈前面(A-> B-> C)。
现在,当点击通知时,我会使用意图标记Intent.FLAG_ACTIVITY_NEW_TASK和Intent.FLAG_ACTIVITY_CLEAR_TOP启动活动A,并按意图传递额外信息。
Intent AIntent = new Intent(getApplicationContext(), ActivityA.class);
AIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
AIntent.putExtra(Constants.IntentFields.FROM_NOTI, true);
AIntent.putExtra(Constants.IntentFields.GROUP_POS, groupActive);
AIntent.putExtra(Constants.IntentFields.CHILD_POS, childPos);
,
private PendingIntent getPendingIntent(Intent AIntent)
{
int requestCode = (int) System.currentTimeMillis();
return PendingIntent.getActivity(delegate, requestCode, AIntent, PendingIntent.FLAG_UPDATE_CURRENT);
}
现在调用A的oncreate,这里我调用getIntent并检查额外信息以查看它是否是从通知中触发的。如果是,我会通过再次传递一些额外信息来启动B。
//in A's onCreate()
Bundle extras = intent.getExtras();
if(extras!=null && extras.getBoolean(Constants.IntentFields.FROM_NOTI) && Delegate.INSTANCE.isLoggedIn())
{
Intent BIntent = new Intent(ActivityA.this, ActivityB.class);
Bundle bundle = new Bundle();
bundle.putBoolean(Constants.IntentFields.FROM_NOTI, true);
bundle.putInt(Constants.IntentFields.GROUP_POS, extras.getInt(Constants.IntentFields.GROUP_POS));
bundle.putInt(Constants.IntentFields.CHILD_POS, extras.getInt(Constants.IntentFields.CHILD_POS));
BIntent.putExtras(bundle);
startActivity(BIntent);
}
当我调用getIntent()时,在B的onCreate()上,返回的intent不包含我从A传递的额外信息。
//called from B's onCreate
private void checkIntent(Intent intent)
{
Bundle extras = intent.getExtras();
if(extras!=null && extras.getBoolean(Constants.IntentFields.FROM_NOTI))
{
Log.e(Constants.TAG, "From noti");
startC(extras);
}
}
如何访问启动活动B的新意图?我试过onNewIntent(),但没有调用。