我正在为Android创建一个应用程序,我如何设置它是因为我有一个登录活动,可以让你登录,但它也检查你是否先保存了令牌,如果它立即启动主要活动和完成,所以对用户来说,它们看起来像直接进入该应用程序。然后在主要活动中我打电话以确保密钥仍然良好,如果它没有通过任何事情,但如果没有,则用户退出。
所以这是问题 这非常有效,除非我收到通知。我设置了启动登录活动的待定意图,因为这就是我的应用程序的流程开始但问题是,onNewIntent永远不会被命中,因为如果用户被登录,登录活动会在创建后立即完成,因此不允许我把它传递给我想要处理逻辑的主要活动。什么是正确的行动方案?我应该通知刚启动主要活动吗?我想避免这种情况,因为我必须重做我的应用程序的一些逻辑。 我的应用已按预期工作。如果有人在我的应用程序中打开通知,通知栏就会被解雇。没有任何反应,如果它们在应用程序之外,它会启动登录活动并正确启动应用程序。
在我的服务中创建通知:
mNotificationManager = (NotificationManager)
this.getSystemService(Context.NOTIFICATION_SERVICE);
Intent i = new Intent(this, LoginActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_SINGLE_TOP);
i.putExtra("type",type);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.microphone_notififcation_icon)
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher))
.setAutoCancel(true)
.setContentTitle("YapTap")
.setStyle(new NotificationCompat.BigTextStyle().bigText(msg))
.setDefaults(Notification.DEFAULT_SOUND)
.setTicker(msg)
.setNumber(num)
.setContentText(msg);
mBuilder.setContentIntent(contentIntent);
mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
在我的登录活动中
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(userLoggedIn())
{ //if user is logged in start next activity and finish
Intent i = new Intent(this, MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
finish()
}
}
@Override
protected void onNewIntent(Intent intent)
{
super.onNewIntent(intent);
//Notification intent received here correctly
}