Обработка уведомлений в строке состояния - PullRequest
2 голосов
/ 08 марта 2010

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

    Context context = getApplicationContext();
    String ns = Context.NOTIFICATION_SERVICE;
    int icon = R.drawable.icon;
    CharSequence tickerText = "Hello";
    long when = System.currentTimeMillis();
    Notification notification = new Notification(icon, tickerText, when);
    CharSequence contentTitle = "My notification";
    CharSequence contentText = "Hello World!";
    Intent notificationIntent = new Intent(MyService.this, MyClass.class);
    notificationIntent.setFlags(  Intent.FLAG_ACTIVITY_NEW_TASK);

    PendingIntent contentIntent = PendingIntent.getActivity(this,0,notificationIntent,0);

    notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
   NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
   mNotificationManager.notify(1, notification);

Уведомление отображается в строке состояния, но когда я нажимаю, MyClass.class не запускается. И в журнале cat он показывает «Окно обслуживания менеджера ввода уже сфокусировано, игнорируя фокус ...»

так что, пожалуйста, предоставьте решение.

спасибо заранее

Ответы [ 2 ]

2 голосов
/ 08 марта 2010

Я не уверен, что вы подразумеваете под "MyClass.class не запущен", но если он уже загружен и вы ожидаете повторного вызова onCreate, возможно, вы ожидаете неправильных результатов. Я делаю что-то очень похожее, и чтобы получить код для выполнения в моем уже запущенном классе, производном от Activity, от прикосновения к уведомлению, я передаю PendingIntent.FLAG_UPDATE_CURRENT в качестве 4-го параметра конструктору PendingIntent

PendingIntent contentIntent = PendingIntent.getActivity(YourService.this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

и я поместил свой код для выполнения в следующем методе Задания:

@Override
public void onNewIntent(Intent intent)
{
    super.onNewIntent(intent);

    // your code here

}
1 голос
/ 08 марта 2010

Во-первых, не используйте getApplicationContext(). Ваш Service - это Context, а "контекст приложения", как правило, бесполезен для мест, где вам нужен Context.

Во-вторых, я сомневаюсь, что вам нужно FLAG_ACTIVITY_NEW_TASK.

Вот пример приложения , показывающий использование Notifications.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...