我知道关于这个问题有一些讨论,但我的情况不同。
我的案例:LanchActive(加载动画)-
我已经实现了以上内容,我设置了主要活动:
android:launchMode="singleTask"
具有以下设置的通知:
Intent resultIntent = new Intent(this, LancherActivity.class);
resultIntent.setAction("android.intent.action.MAIN");
resultIntent.addCategory("android.intent.category.LAUNCHER");
PendingIntent resultPendingIntent = PendingIntent.getActivity(
getApplicationContext(), 0, resultIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
serviceNotificationbuilder.setContentIntent(resultPendingIntent);
serviceNotification = serviceNotificationbuilder.build();
startForeground(1, serviceNotification);
在主活动中:
@Override
protected void onResume() {
mTabHost.setCurrentTab(B);
}
我在MainActivity中使用singleTask lanchMode的原因是为了避免每次单击通知时创建新实例。然而,如果我使用上面的代码,就会发生一些我不想看到的事情。
mTabHost.setMONtTab(B);
所以mTabHost.setMONTTAB(B);
应该只在Mainactive来自通知时工作。但我不知道Mainactive是从通知或其他方式开始的(最近的应用程序列表或直接打开应用程序)。
有人有办法吗,谢谢?
您应该在onPause()中保存当前选项卡的索引,并在onResume()中恢复它。
保存索引:
int index = tabHost.getCurrentTab();
恢复索引:
tabHost.setCurrentTab(index);
编辑:MainActivity start from notification和other way之间的唯一区别是start from notification需要通过onCreate()而other way不需要。因此,您需要在onCreate()中添加一个标志。
private boolean flag;
private in mCurrentTab = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
flag = true;
}
@Override
protected void onResume() {
if (flag)
setCurrentTab(1); // set to B
else
setCurrentTab(mCurrentTab);
flag = false;
}
@Override
protected void onPause() {
mCurrentTab = tabHost.getCurrentTab();
}
首先,删除MainActivity的android:launchMode=“singleTask”,并更新您的通知意图,如下所示:
Intent resultIntent = new Intent(this, LancherActivity.class);
resultIntent.putExtra("openTabB",true);// add this line
在您的Launchactive中,创建一个boolean
字段,说openTabB
并将其设置为false
。
在Launchactive的onCreate方法中,使用此行
openTabB = getIntent().getExtras().getBoolean("openTabB");
在LaunchActive中使用MainActive调用者的Intent。在该意图中添加boolean
额外,key是openTabB
,value是openTabB字段。
现在,在您的主要活动中,使用以下行:
openTabB = getIntent().getExtras().getBoolean("openTabB");
if(openTabB)
{
//open tab B
}
else
{
// normal execution
}
我希望这对你有帮助。
我正在开发一个应用程序,它使用GCM进行推送通知。 我的问题是关于如何从用户单击通知时打开/启动应用程序。我有两种潜在的情况: A)应用程序已打开,并且驻留在前台或后台,无论哪种方式,我的GCM工作正常,GCM消息到达用户点击通知并意图启动相关活动(通过通知等待意图传递)。 b)应用程序关闭,收到通知,用户再次点击通知,并试图开始相关活动,这是它变得混乱的地方。该应用程序有一个后端,所以现在需要自
我的应用程序有如下活动堆栈 A:加载活动 B:主要活动 C:细节活动 清单是这样的 当我从启动器启动应用程序时,它充当A- 但当我从通知启动应用程序时,因为我不想显示加载屏幕,启动活动B。所以,用户可以导航B- 但当用户在活动C中按Home键并从最近的应用程序列表中选择应用程序时,B会重新启动,状态不会保留。所以C活动总是消失。 我尝试了许多标志选项,但我没有找到解决方案。我想要的是应用程序的行为
我已经创建了一个Windows Phone 8.1应用程序,它可以将吐司通知发送到Windows Phone的操作中心。现在我需要在用户点击toast通知时打开另一个应用程序。我怎样才能实现这个..?我可以打开创建toast通知的同一个应用程序。我怎么才能打开另一个我指定的应用程序...?
当用户在我的通知中单击一个按钮时,我正试图打开,而该应用程序仅在后台运行并提供服务。单击按钮时,这些行在类中被触发: 我已经检查过了,这些行被触发了,所以对按钮的点击做出反应没有问题,但是不会打开。 有什么建议吗?为什么这对我不起作用,我怎么能让它起作用? 我被要求提供更多的代码,因此在我的
我想知道是否有办法知道一个应用程序(可以在后台关闭或打开)是否已经启动,只需单击: 通知(在通知中心)? 还是跳板上的应用程序图标? 谢谢
在通知部分,我有这个通知不打开APP的问题。有什么建议吗?我试了很多可能性,但没有...我错在哪里?请帮帮我。