【问题标题】:Sony SmartWatch - How to pass data to control extension?Sony SmartWatch - 如何传递数据来控制扩展?
【发布时间】:2013-01-08 16:30:15
【问题描述】:

如果我想通过CONTROL_START_REQUEST_INTENT 操作将一些数据(通过捆绑包或其他方式)传递给我的控制扩展,我能做什么?

我没有看到任何 Intent 或 Bundle 对象被传递给 ControlExtension 类的构造函数。

【问题讨论】:

  • 我推荐this question 和待观察的答案。
  • @tarosay“这个问题”没有回答我的问题。用户可以通过点击手表上的应用图标或发送 CONTROL_START_REQUEST_INTENT 操作来调用 ControlExtension。如果由操作意图调用,我希望 ControlExtension 执行一些与用户手动调用不同的行为。这就是为什么我想使用 CONTROL_START_REQUEST_INTENT 意图将数据传递给 ControlExtension。

标签: android sony sony-smartwatch


【解决方案1】:

不幸的是,目前无法知道 ControlExtension 是由用户从手表启动的,还是您自己通过 START_REQUEST Intent 请求启动的。从主机应用程序发送的结果启动不提供此类信息。

您可以通过在发送 START_REQUEST 意图时设置一个标志来解决它,然后您将知道(在一定程度上,当然不是 100%)扩展程序是通过请求而不是由用户启动的。这是一种解决方法,但正如我所说,不防水。

你能举个例子说明你想完成什么吗?

【讨论】:

  • 这种变通方法不是一个好的解决方案。我在我的“2x Battery”应用程序中使用了一个肮脏的解决方案。这是一个例子,当手机的电池电量不足时,2x 将使用 CONTROL_START_REQUEST_INTENT 在手表上显示控制扩展并振动。如果用户在振动时点击屏幕,2x 不会插入事件;否则将在 onPause() 处添加一个事件,以便稍后通知用户。如果用户手动调用控件扩展,则不应启用“自动添加事件”代码。
【解决方案2】:

您不能为此使用首选项吗?

在使用 START_REQUEST 之前,在首选项中输入一个值,表明扩展是根据请求启动的,然后从扩展代码中检查该值是否存在。

但是,IMO 你应该重新考虑你的应用逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多