在Android中强制关闭应用程序时获取本地通知

时间:2014-06-26 08:18:19

标签: android notifications android-notifications android-notification-bar

在Facebook安卓应用中,我们会在应用被强制关闭时收到通知。它的工作原理是因为实现了推送通知。但我已经在我的应用程序中实现了本地通知,如果应用程序被强制关闭,我希望我的应用程序通知。那我怎么能实现呢。

        void showNotify()
        {
            CharSequence details = "Notification raised";
    int reqCode=0;
    Intent notificationIntent = new Intent(context,
            NotifyListActivity.class);
    // notificationIntent.putExtra("clicked", "Notification Clicked");
    notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
            | Intent.FLAG_ACTIVITY_SINGLE_TOP); // To open only one   activity
                                                // on launch.
    PendingIntent pIntent = PendingIntent.getActivity(context, reqCode,
            notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    NotificationManager nM = (NotificationManager) context
            .getSystemService(Context.NOTIFICATION_SERVICE);
    NotificationCompat.Builder notify = new NotificationCompat.Builder(
            context);
    notify.setContentIntent(pIntent);
    notify.setSmallIcon(R.drawable.appicon);
    notify.setContentTitle("");
    notify.setContentText(details);
    notify.setAutoCancel(true);
    nM.notify(reqCode, notify.build());
    screenOn(context);
            }

2 个答案:

答案 0 :(得分:0)

我不认为您应该控制您的应用是否强行关闭,如果您的应用已被强制关闭,IMO通常不会按预期行事。

说过这两件事完全不同,当您收到推送通知时,您正在接收来自互联网(或其他来源)的消息,然后您可以回复显示本地通知的消息(在您的通知栏中),你会找到一种方法来触发你的本地通知以便显示(一个重复的警报?),通知不能自己启动(或者至少我不知道怎么做)。

答案 1 :(得分:0)

您可以将此用于异常处理:Android exception handling best practice? 这样,您可以在抛出未处理的异常时执行代码。你也可以抓住它们,但这对你来说可能不是一件有趣的事情。

然后在UncaughtExceptionHandler中我会启动一个前台服务。这是必要的,因为应用程序将关闭。我没有测试它,告诉我它是否有用。这将是服务的onCreate:

    @Override public void onCreate() {
       final NotificationCompat.Builder builder = new Builder(this);
       builder.setSmallIcon(R.drawable.icon_resource);
       builder.setContentTitle(getString(R.string.notification_title));
       builder.setTicker(getString(R.string.notification_ticker));
       builder.setContentText(getString(R.string.notification_content_text));

       final Intent notificationIntent = new Intent(this, Activity_TO_OPEN_ON_NOTIFICATION_CLICKED.class);

       final PendingIntent pi = PendingIntent.getActivity(this, 0, notificationIntent, 0);

       builder.setContentIntent(pi);

       final Notification notification = builder.build();

       startForeground(1234, notification);
       }