Окно уже сфокусировано, игнорируя усиление фокуса: com.android.internal.view - PullRequest
2 голосов
/ 07 сентября 2011

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

Следующий код находится в AppWidget.При нажатии на уведомление передается пользовательское намерение, полученное AppWidget.

Проблема заключается в том, что действие не запускается, хотя logcat демонстрирует, что пользовательское намерение действительно было передано.Единственная подсказка - сообщение logcat, повторенное в заголовке сообщения.

@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(Constants.BROWSER_INTENT)) {
        launchActivity(context, R.layout.appwidget, R.id.launch_button, Activity.class);
    }
    super.onReceive(context, intent);
}


private void displayNotification(Context context, String ticker, String title, String msg) {
    Intent intent = new Intent(context, ThisWidget.class);
    intent.setAction(Constants.BROWSER_INTENT); 
    PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0);

    NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(R.drawable.icon, ticker, System.currentTimeMillis());

    notification.setLatestEventInfo(context, title, msg, pending);
    notificationManager.notify(1, notification);
}

Некоторые примечания:

  • Нажатие кнопки для запуска работ launchActivity () (запускает Activity)
  • launchActivity использует Intent.FLAG_ACTIVITY_NEW_TASK в соответствии с рекомендациями документации по жизненному циклу Android

Кто-нибудь решал эту проблему при запуске Activity из прессы уведомлений?

1 Ответ

3 голосов
/ 07 сентября 2011

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

   Intent intent = new Intent(context, ThisWidget.class);
   intent.setAction(Constants.BROWSER_INTENT); 
   PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0);

к этому:

   Intent intent = new Intent(context, Activity.class);
   PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0);

и это сработало.

Извините за поддельный пост.

...