打开应用程序点击通知?

时间:2014-08-18 09:39:48

标签: android notifications

我想在用户点击通知时打开我的应用,如果它不在前台。

到目前为止我得到了这个:

private void adNotification(Ad ad) {

    PendingIntent dummyIntent = PendingIntent.getActivity(this, 0, new Intent(), Intent.FLAG_ACTIVITY_NEW_TASK);
    Intent notificationIntent = new Intent(this, SplashScreen.class);
    Store storeFromAd = ad.getStoreFromAd();
    notificationIntent.putExtra("uzlet", new Gson().toJson(storeFromAd));
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT);
    mNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this).setSmallIcon(R.drawable.icon).setAutoCancel(true).setContentTitle(ad.ad_title)
            .setStyle(new NotificationCompat.BigTextStyle().bigText(ad.ad_text)).setContentText(ad.ad_short_text);
    mBuilder.setContentIntent(dummyIntent);

    //Checks whether the application is in foreground.
    if (MainActivity.isInFront) {
        Log.i("isInFront-serviceCheck", "isInFront = true");
        mBuilder.setContentIntent(dummyIntent);
    }
    else {
        Log.i("isInFront-serviceCheck", "isInFront = false");
        mBuilder.setContentIntent(contentIntent);
    }
    int notifID = Integer.parseInt(ad.ad_id);
    mNotificationManager.notify(notifID, mBuilder.build());
}

我的活动有一个 isInFront布尔变量:

    @Override
protected void onResume() {
    super.onResume();
    isInFront = true;
    Log.i("isInFront-onResume", "isInFront = true");
}
@Override
protected void onDestroy() {
    super.onDestroy();
    isInFront = false;
    Log.i("isInFront-onDestroy", "isInFront = false");

}

好吧,我的问题是:

当然,当您立即点击通知时它会起作用,例如:

  1. 我的应用程序位于前台,isInFront变量为true。

  2. 我收到通知,通知构建器使用虚拟意图构建它,什么都不做。

  3. 我没有点击通知,而是关闭了应用。

  4. 现在我点击通知,并且应用程序未打开,因为通知构建器在isInFront变量为true时构建它。

  5. 所以问题是,通知的意图是没有保留应用程序的当前状态,它是在发送到设备时保持该状态。

    我怎么能做这个工作?有什么想法吗?

0 个答案:

没有答案