【问题标题】:Why can't I start an Activity from a page Notification on Android Wear?为什么我无法从 Android Wear 上的页面通知启动 Activity?
【发布时间】:2015-05-08 15:32:26
【问题描述】:

我刚刚在我的 Wear 设备上成功创建了一堆页面通知。

唯一的问题是 PendingIntent 似乎没有启动一个 Activity (当然是在 Manifest 中声明的)。

这是我的代码:

List extras = new ArrayList();
Intent viewIntent = new Intent(getApplicationContext(), DetailActivity.class);
viewIntent.putExtra("KEY", "TEST123");
//Note: I also tried: Intent viewIntent = new Intent(getApplicationContext(), DetailActivity.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent viewPendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, viewIntent, 0);

for (Route aRoute : myRoutes) {
    Notification aNotif = new NotificationCompat.Builder(getApplicationContext())
    .setContentTitle("BUS " + aRoute.route_short_name)
    .setContentText(aRoute.directions.get(0).trip_headsign)
    .setLargeIcon(bitmap)
    .setContentIntent(viewPendingIntent)
    .setSmallIcon(R.mipmap.ic_launcher).build();

    extras.add(aNotif);
}

NotificationCompat.Builder builder1 = new NotificationCompat.Builder(this)
    .setContentTitle(title)
    .setContentText(desc)
    .setContentIntent(viewPendingIntent)//Just in case
    .setSmallIcon(R.mipmap.ic_launcher);

Notification notification = builder1
    .extend(new NotificationCompat.WearableExtender()
    .addPages(extras))
    .setContentIntent(viewPendingIntent)//Just in case
    .build();

NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
    notificationManager.notify(0, notification);

当我按下通知时,我希望意图启动,但没有任何反应..

欢迎提出任何建议。

编辑: 这段代码在通知之后就可以工作,因此,可以轻松启动第二个活动,而不会出现我们的错误:

 startActivity(viewIntent);

编辑2: 现在末尾有一个“打开”按钮可以正常工作,但单个通知(每个页面)仍然没有任何反应

【问题讨论】:

  • 当您转到“在手机上打开”操作时,会启动 Wear 设备上的内容意图 - 这是否正确启动了您的详细活动?
  • 你好@ianhanniballake 上面的代码打开一个主通知(如预期),三个页面(如预期)和一个“阻止应用程序”按钮(默认情况下我猜)我不想显示“在手机上打开”操作。
  • 确切地说:现在末尾有一个“打开”按钮可以正常工作,并在手表上打开活动,但个别通知(每页)仍然没有任何反应

标签: android android-intent notifications wear-os


【解决方案1】:
  1. 页面不可点击 - 在 Android Wear 上,只有操作可点击。对于手机生成的通知,这些通知仅显示在所有页面之后
  2. 如果您对手机生成的通知有内容意图,则该通知将始终显示为“在手机上打开”操作。除非您移除内容意图(使通知在手机上无法点击),否则无法禁用此功能。

我说“电话生成”,你也可以create a Wear app。通过使用data layer 将消息推送到您的Wear 应用程序,Wear 应用程序可以构建custom notifications。这些通知允许您使用setDisplayIntent() 并内联显示活动(作为主页或单独的页面)。当然,这些活动可以包含您想要的任何视图,包括执行任何操作的操作(例如将消息发送回手机以启动特定活动)。

请注意,由于默认情况下页面不可点击,因此自定义通知的样式应使项目可点击非常明显。除了使用自定义通知活动,您可以考虑使用setContentAction() 来显示与布局的其余部分内联的操作图标 - 这会将操作作为单独的元素从操作中移除,并将其直接放置在通知/页面上。

【讨论】:

  • 你好伊恩,我不想占用你所有的时间,但是 displayIntent 几乎可以工作了,唯一的问题是我无法将数据传递给它,请参阅这个新问题:stackoverflow.com/questions/30136947/…
猜你喜欢
  • 1970-01-01
  • 2020-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多