OnMessageReceived n'est pas appelé dans WearableListenerService

Je travaille sur l'application android using Eclipse IDE. J'utilise les mêmes noms de paquets pour l'application d'usure et l'application mobile et je suis en train d'empaqueter une application portative manuellement selon la documentation de Google. Tout fonctionne bien. Il est installé sur Android use emulator using usb debugging Avec le téléphone.

Mon problème est quand j'envoie un message à utiliser en utilisant le code suivant

  • Comment effectuer une requête SQLite dans une application Android?
  • Android: GLES20: appelée API OpenGL non mise en œuvre
  • Est-ce que Environment.getExternalStorageDirectory () renvoie un dossier de données utilisable quand aucune carte sd n'est montée?
  • Android et MJPEG
  • Android: comment modifier le texte dans un champ EditText?
  • Impossible de taper dans le terminal intégré de Android Studio
  • List<Node> nodeList=getNodes(); for(Node node : nodeList) { Log.v(" ", "telling " + node.getId() ); PendingResult<MessageApi.SendMessageResult> result = Wearable.MessageApi.sendMessage( mGoogleApiClient, node.getId(), START_ACTIVITY_PATH, null ); result.setResultCallback(new ResultCallback<MessageApi.SendMessageResult>() { @Override public void onResult(MessageApi.SendMessageResult sendMessageResult) { Log.v(" ", "Phone: " + sendMessageResult.getStatus().getStatusMessage()); } }); } 

    La méthode OnPeerConnected est en cours d'exécution lorsque les périphériques sont repérés mais OnMessageReceived n'a jamais été appelé dans WearableListenerService.C'est le code WearableListenerService:

     public class DataLayerListenerService extends WearableListenerService { private static final String TAG = "DataLayerSample"; private static final String START_ACTIVITY_PATH = "/start/MainActivity"; private static final String DATA_ITEM_RECEIVED_PATH = "/data-item-received"; private static final String LOG_TAG = "log"; @Override public void onPeerConnected(Node peer) { super.onPeerConnected(peer); String id = peer.getId(); String name = peer.getDisplayName(); Log.d(LOG_TAG, "Connected peer name & ID: " + name + "|" + id); } @Override public void onDataChanged(DataEventBuffer dataEvents) { System.out.println("Recevive message3"); } @Override public void onMessageReceived(MessageEvent messageEvent) { System.out.println("service watch message1"); if (messageEvent.getPath().equals(START_ACTIVITY_PATH)) { System.out.println("service watch message2"); Intent startIntent = new Intent(this, MainActivity.class); startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(startIntent); } } } 

    De plus, un message d'avertissement dans Logcat apparaît toujours:

    L'application ne correspond pas à la clé de l'application de l'enregistrement: AppKey [com.myapp, c3f31717fa35401056c20a2798907f1232efa75e]! = AppKey [com.myapp, f36e726eefc7e528db26a1c25f6fbf2f93dacd70]

    Si la touche de l'application pour les deux applications devrait être identique, comment puis-je créer la même clé d'application pour les deux applications?

    Toute aide est très appréciée, merci.

    3 Solutions collect form web for “OnMessageReceived n'est pas appelé dans WearableListenerService”

    Le message d'erreur que vous avez:

    L'application ne correspond pas à la clé de l'application de l'enregistrement: AppKey [com.myapp, c3f31717fa35401056c20a2798907f1232efa75e]! = AppKey [com.myapp, f36e726eefc7e528db26a1c25f6fbf2f93dacd70]

    Indiqué que vos applications sont signées avec les différentes clés.
    Les noms de paquets des applications portables et portables sont les mêmes – c'est bon, mais ils doivent également partager la même signature. C'est la raison pour laquelle les messages ne peuvent pas être livrés – les applications portables sont reconnues comme «partie de la même application» en fonction du nom du package et de la signature.

    Assurez-vous que vous avez les deux applications signées avec la même clé. Si vous testez la fonctionnalité d'autoinstallation, assurez-vous de désinstaller la version de débogage de l'application portable de l'émulateur de montre.

    J'ai eu la même erreur, ma faute était que le nom du paquet du module "usure" n'était pas le même que celui de l'application.

     BAD: [module: app] es.voghdev.myapp [module: wear] es.voghdev.myapp.wear GOOD: [module: app] es.voghdev.myapp [module: wear] es.voghdev.myapp 

    Cela m'a fait perdre autant de temps! > 🙁

    Utilisez un asyntask pour envoyer des messages car ils bloqueront le thread ui. Aussi, vous devez appeler la méthode d'attente. Pour que les applications aient la même clé, vous devez utiliser des variantes de construction avec gradle.

     public class SendMessageTask extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... voids) { NodeApi.GetConnectedNodesResult nodes = Wearable.NodeApi.getConnectedNodes(apiClient).await(); for (Node node : nodes.getNodes()) { Wearable.MessageApi .sendMessage(apiClient, node.getId(), "/start/MainActivity", null) .await(); } return null; } @Override protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); Toast.makeText(MainActivity.this, "Message Sent", Toast.LENGTH_SHORT).show(); } } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.