窗口已经集中,无视焦点增益:com.android.internal.view

时间:2011-09-07 17:43:34

标签: android android-widget android-intent android-notifications

很遗憾,我无法在其他StackOverflow帖子中找到解决此问题的方法,因此我提前道歉重新发布此问题。基本上,我有一个创建通知的AppWidget。我希望用户单击通知以启动活动。 AppWidget和Activity都在同一个APK中。

以下代码全部在AppWidget中。单击Notification会广播AppWidget接收的自定义Intent。

问题是Activity似乎没有启动,即使logcat证明自定义的Intent确实已被广播。唯一的线索是帖子标题中重申的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()工作(启动 活动)
  • launchActivity使用Intent.FLAG_ACTIVITY_NEW_TASK作为 Android生命周期文档推荐

从Notification按下启动活动时,是否有人解决了此问题?

1 个答案:

答案 0 :(得分:3)

呃,数字,我在发布之后几分钟回答了我自己的问题。我想我通过使用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);

并且有效。

抱歉这个虚假的帖子。