Отправка сообщения с телефона на носимый телефон: onMessageRectained не вызывается - PullRequest
0 голосов
/ 24 апреля 2020

Итак, у меня есть подключенный эмулятор износа и телефон android для тестирования. Отправка карт данных с телефона на носимый работает нормально.

Теперь я хочу отправить сообщение с носимого телефона на телефон. Я пробовал это с AsyncTask и без него. Сообщения успешно отправляются в обоих случаях, но сообщение не доходит до моего телефона.

Идентификаторы моего приложения совпадают.

Вот мой код:

/ / Износ

    //Try with Async
inner class requestTokenTask : AsyncTask<Void?, Void?, Void?>() {
            override fun doInBackground(vararg params: Void?): Void? {
                    Wearable.getMessageClient(this).sendMessage(_connectedNode.toString(), "/requesttoken", null)
                return null
            }

        override fun onPostExecute(aVoid: Void?) {
            super.onPostExecute(aVoid)
            Log.d(TAG, "Message sent: $aVoid")
        }

    }

    //Try without async
    fun requestToken() {
        if(_connectedNode?.id != null){
            val sendTask: Task<*> = Wearable.getMessageClient(this).sendMessage(
                    _connectedNode!!.id!!,
                    "/requesttoken",
                    null
            ).apply {
                addOnSuccessListener {
                    Log.d(TAG, "Message sent: $it")
                }
                addOnFailureListener {
                    Log.d(TAG, "Message NOT sent, error: $it")
                }
            }
        }

}

Код КПК:

    public override fun onResume() {
        super.onResume()
        Wearable.getDataClient(this).addListener(this)
        Wearable.getMessageClient(this).addListener(this)
        Wearable.getCapabilityClient(this)
                .addListener(this, Uri.parse("wear://"), CapabilityClient.FILTER_REACHABLE)

    }

override fun onMessageReceived(messageEvent: MessageEvent) {
    Log.d(TAG, "onMessageReceived()")
    //Receive the message from wear
   if (messageEvent.path.equals("/requesttoken")) {
  //Do stuff
    }
}

Часть манифеста:

<activity
            android:name=".wear.WearableActivity"
            android:theme="@style/Theme.Transparent">
            <intent-filter>
                <action
                    android:name="com.google.android.gms.wearable.BIND_LISTENER"/>
                <!-- listeners receive events that match the action and data filters -->
                <action android:name="com.google.android.gms.wearable.DATA_CHANGED" />
                <data android:scheme="wear" android:host="*" android:pathPrefix="/token"/>
            </intent-filter>

        </activity>

ОБНОВЛЕНИЕ: Только что выяснилось, что «BIND_LISTENER» устарел, попробовал еще раз, удалив его и добавив вместо него «MESSAGE_RECIEVED», но он все еще не работает.

1 Ответ

0 голосов
/ 29 апреля 2020

Я попробовал другой способ с Broadcast Recievers с этим руководством , и теперь связь работает в обоих направлениях

...