由于活动太快完成,因此未收到Android通知意图

时间:2015-04-20 13:31:35

标签: android android-intent android-activity notifications android-pendingintent

我正在为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
}

0 个答案:

没有答案