WearableListenerSerivce onMessageReceived не вызывается с тем же идентификатором приложения - PullRequest
0 голосов
/ 29 апреля 2020

Я разрабатываю приложение Android с модулем Watch (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>

Приложение Listener

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 больше не вызывается ... что я делаю не так?

1 Ответ

0 голосов
/ 29 апреля 2020
<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>

экспорт должен быть верным!

...