【问题标题】:Sending a post request in a notification action on Android Wear / Wear OS在 Android Wear / Wear OS 上的通知操作中发送发布请求
【发布时间】:2018-06-22 22:00:28
【问题描述】:

我的 Wear OS 应用程序中有一个带有操作的通知,我一直在寻找如何在触发通知操作时发送发布请求。有没有办法做到这一点?

我知道 Android Wear 2.0 具有 Internet 功能,并且我看到了打开带有通知的浏览器但没有发送 HTTP 请求的示例。

    NotificationManager notificationManager = (NotificationManager) context.GetSystemService(Context.NotificationService);

        Intent respondIntent = new Intent(context, typeof(AlarmReceiver));
        PendingIntent respontPendingIntent = PendingIntent.GetActivity(context, 0, respondIntent, PendingIntentFlags.UpdateCurrent);

        Notification.Action action = new Notification.Action(Resource.Drawable.generic_confirmation,"hello", respontPendingIntent);
        var noti = new Notification.Builder(context)
            .SetContentTitle("Title").SetContentText("content text")
            .SetSmallIcon(Resource.Drawable.pills)
            .AddAction(action);


        notificationManager.Notify(notificationId, noti.Build());

这就是我目前所拥有的(目前该操作没有做任何事情)。

【问题讨论】:

  • 您能否澄清一下您在使用 HTTP 时遇到了什么问题?网络访问在 Wear 上的工作方式与在任何其他 Android 设备上的工作方式基本相同;您通过通知操作执行此操作的事实似乎无关紧要。
  • 问题是我还没有找到从通知中的意图/动作发送请求的方法
  • 正如我发现没有办法(到目前为止)从意图发送请求。

标签: post action android-notifications wear-os


【解决方案1】:

许多不同的方法来实现这一点,但共同的主题是PendingIntent 只是连接到您的应用程序中实际发生工作的某个其他组件的挂钩。您没有将 HTTP 请求放入Intent,而是将其放入Intent 调用的应用程序组件中。

在您的情况下,与其从“PendingIntent”打开AlarmReceiverActivity,不如启动IntentServiceBroadcastReceiver 之类的东西,然后将您的网络操作放在那里。如果您还需要打开AlarmReceiver,您也可以在您的BroadcastReceiver 中进行操作。

Which component to use 取决于您的应用程序正在做什么的大局,并且超出了 StackOverflow 答案的范围。但这是非常基本的 Android 应用程序架构,真的。

【讨论】:

  • 我希望我不必使用广播接收器或意图服务来发送简单的发布请求,但是唉
  • 如果您正在执行 HTTP GET,您可能可以通过将 URL 编码为 Intent 而不是 POST 来管理它。但即使使用 GET,也会有其他副作用 - 例如浏览器会打开以处理请求,而您也无法打开您的 AlarmReceiver
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多