未调用WearableListenenerService onMessageReceived

时间:2017-10-03 22:27:11

标签: java android wear-os

我做了一个简单的服务,应该接收来自穿着的信息:

public class serviceforwatchlock extends WearableListenerService {

    @Override
    public void onMessageReceived(MessageEvent messageEvent) {
        super.onMessageReceived(messageEvent);

        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    }

    @Override
    public void onCreate() {
        super.onCreate();
    }
}

我检查了onCreate方法是否被调用,确实是。

此外,这是我的清单:

<service
            android:name=".serviceforwatchlock"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="com.google.android.gms.wearable.MESSAGE_RECEIVED" />
                <data android:scheme="wear" android:host="*"
                    android:path="/start-activity" />
            </intent-filter>
        </service>

现在我的磨损代码:

new Thread(new Runnable() {
            @Override
            public void run() {
                NodeApi.GetConnectedNodesResult nodes = Wearable.NodeApi.getConnectedNodes( mApiClient).await();
                for(Node node : nodes.getNodes()) {
                    MessageApi.SendMessageResult result = Wearable.MessageApi.sendMessage(
                            mApiClient, node.getId(), "/start_activity", "lockscreenGTP".getBytes() ).await();
                }
            }
        }).start();

onMessageReceived方法没有被调用,我也没有收到任何错误消息。我做错了什么?

1 个答案:

答案 0 :(得分:0)

根据此thread,您遇到此问题的一个可能原因是您的应用使用不同的密钥进行签名。手机和可穿戴应用程序的包名称相同,并且还需要共享相同的签名。请确保您使用相同的密钥签署了这两个应用。此thread中还建议您检查applicationId是否相同。