Уведомление в строке состояния открывает действие при запуске телефона - PullRequest
0 голосов
/ 20 декабря 2011

Я создал сервис, который отображает уведомление в строке состояния через определенный промежуток времени. Я также создал широковещательный приемник, который запускает службу при перезагрузке телефона или включении. Проблема, с которой я сталкиваюсь, заключается в том, что, когда телефон перезагружается, я вижу уведомление в баре, но после этого приложение запускается. Я не хочу, чтобы приложение запускалось само по себе, оно должно запускаться только тогда, когда пользователь нажимает на уведомление.

Мой код для приемника Broad Cast:

@Override
    public void onReceive(Context context, Intent intent) {



        if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {


            try
            {
                Intent intent1 = new  Intent(context, NotificationService.class);
                context.startService(intent1);

            }
            catch(Exception e)
            {

            }


        }

    }

Мой код для уведомления:

public static void showNotification(Context context )
    {


    NotificationManager notificationManager = (NotificationManager)         context.getSystemService(Context.NOTIFICATION_SERVICE);

    Notification notification = new Notification(R.drawable.ic_launcher, "Pull Me Down!!", 1000);
    Intent intent = new Intent(context,X.class);
    PendingIntent  pendingIntent = PendingIntent.getService(context, 0, intent, 0);
    notification.setLatestEventInfo(context, "I came!!", "My First Notifcation" , pendingIntent);
    notificationManager.notify(MY_ID, notification);

    }

Я вызываю вышеуказанный метод в onCreate моего Сервиса. а также вызывая его в моем классе активности X:

NotificationService.setActivity(StatusBarNotificationActivity.this);
                startService(new Intent(getApplicationContext(), NotificationService.class));

Но не знаю, почему при запуске телефона показывается уведомление, но через несколько секунд также запускается действие X.

Ответы [ 2 ]

1 голос
/ 20 декабря 2011

Решил, просто объявил NotificationManager и Notification вне метода, и это сработало.

0 голосов
/ 20 декабря 2011

Может быть, вы можете попробовать использовать "Foreground service".Для использования службы переднего плана вам просто нужно вызвать метод startForeground.

startForeground(NOTIFICATION_ID, notification);

Но вы должны контролировать жизненный цикл службы, если не хотите, чтобы уведомление всегда отображалось в строке состояния.Надеюсь, что этот ответ полезен для вас.:)

...