android - WearableListenerSerivce onMessageReceived 未使用相同的 applicationID 调用
问题描述
我正在开发一个带有 Watch 模块的 Android 应用程序(应用程序和手表的 applicationID 相同)。我正在测试与真实设备和手表模拟器的通信,但从昨天开始,WearableListenerService 没有任何消息到达,我不明白为什么。
这是清单中的我的服务(应用程序设备)
<service
android:name=".receivers.PhoneMessageService"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.wearable.MESSAGE_RECEIVED" />
<data
android:host="*"
android:scheme="wear" />
</intent-filter>
</service>
应用监听器
class PhoneMessageService : WearableListenerService() {
override fun onMessageReceived(message: MessageEvent?)
{
message?.let { msg ->
sendActionToReceiver(msg.path, msg)
}
}
使用这种方法,我得到了节点(我总是得到我手机的节点,事实上节点的大小总是 1):
private fun getNodes(context: Context, mode: WearCommunicationMode, callback: ((Node?) -> Unit))
{
val capability = Wearable.getCapabilityClient(context).getCapability(mode.capabilityKey, CapabilityClient.FILTER_REACHABLE)
capability.addOnSuccessListener { task ->
val nodes = task?.nodes
if(nodes != null && nodes.size > 0) {
val bestNodeID = nodes.find { node -> node.isNearby } ?: nodes.first()
callback.invoke(bestNodeID)
}else{
callback.invoke(null)
}
}
}
节点大小为 1,所以我已与设备连接,但不再调用 onMessageReceived ......我做错了什么?
解决方案
<service
android:name=".receivers.PhoneMessageService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.google.android.gms.wearable.MESSAGE_RECEIVED" />
<data
android:host="*"
android:scheme="wear" />
</intent-filter>
</service>
导出的必须是真的!
推荐阅读
- javascript - 尝试使用 JavaScript 使用复选框循环计算总价格
- sql - 将子查询值传递给 IN 语句
- firebase - 在 Flutter 中,我们如何使用 Firebase Messaging onBackgroundMessage 创建通知,使用flutter_local_notifications?
- reactjs - 为什么反应应用程序没有在 appengine 服务器中加载 js 包
- javascript - setAsync 返回成功状态,但不在 Outlook 网页版中使用 CoercionType.text 插入数据
- c++ - 来自 Mongoose Web 服务器的错误消息,带有 mbedtls TLS
- django - Django Import Export - UNIQUE 约束失败
- javascript - 如果在运行时分配范围,javascript如何具有词法范围?
- ios - 在树层次结构中对齐节点
- python-3.x - Tkinter,将数据保存在文件中的按钮