2

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

以下代码全部在 AppWidget 中。单击通知会广播一个由 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() 工作(它启动活动)
  • 根据 Android 生命周期文档的建议,launchActivity 使用 Intent.FLAG_ACTIVITY_NEW_TASK

从通知媒体启动活动时,有人解决了这个问题吗?

4

1 回答 1

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);

它奏效了。

对虚假帖子感到抱歉。

于 2011-09-07T18:08:18.587 回答