如何检测我的Android应用程序的Wear应用程序是否已安装在手表中

时间:2015-03-16 10:12:36

标签: android wear-os

是否有可能检测到Android应用中的Wear mini应用程序是否已安装在手表中?

我有一个应用程序,在手表中安装了Wear部件之前无法在手机上使用,因此我希望在此之前阻止所有交互。

应用程序更新如何,是否可以检测Wear部件是否已更新?

修改

在安装应用程序后,看起来像Data API甚至Message API调用都会被缓冲并传递。但是,这并未解决应用更新的问题。这可以通过接受的答案来解决。

2 个答案:

答案 0 :(得分:1)

AFAIK,没有开箱即用的解决方案。

如果您的Wear应用程序没有活动(因此无法由用户启动),您可以做的是在掌上应用程序处于前台时定期发送IS_INSTALLED消息,以便佩戴,直到Wear赢得&# 39;将版本号放入数据层。在应用程序更新时,您可以检查数据层中的版本号,如果它低于当前版本,请重复此过程。

这种方法也将解决磨损设备未连接的问题(或超出范围,基本相同)。

答案 1 :(得分:0)

一种解决方案是使用CapabilityClient(https://developers.google.com/android/reference/com/google/android/gms/wearable/CapabilityClient)。首先,您可以使用NodeClient(https://developers.google.com/android/reference/com/google/android/gms/wearable/NodeClient)检测可穿戴设备和手机是否已连接。下面我提到了检测手表是否与手机连接的代码。

    Task<List<Node>> nodesTask = Wearable.getNodeClient(MainMobileActivity.this)
            .getConnectedNodes();
    nodesTask.addOnSuccessListener(new OnSuccessListener<List<Node>>() {

        @Override
        public void onSuccess(List<Node> nodes) {
            nodeSize = nodes.size();
            for (Node node : nodes) {
                Wearable.getMessageClient(MainMobileActivity.this)
                        .sendMessage(node.getId(), MESSAGE_PATH, "Hello from AndroidWear".getBytes());
            }

            Log.d("Hello" , "Message sent to Cordova");
        }
    });

因此,nodeSize告诉我们连接了多少个节点/手表。

Wearable.getMessageClient(MainMobileActivity.this)
                        .sendMessage(node.getId(), MESSAGE_PATH, "Hello from AndroidWear".getBytes());

这段代码有助于将信息从手机发送到手表。现在来检测手表是否有应用程序。以下是提到的代码。

    Task<CapabilityInfo> capabilityTask = Wearable.getCapabilityClient(this)
            .getCapability(CAPABILITY_WEAR_APP, CapabilityClient.FILTER_REACHABLE);
    capabilityTask.addOnSuccessListener(new OnSuccessListener<CapabilityInfo>() {
        @Override
        public void onSuccess(CapabilityInfo capabilityInfo) {
            mWearNodesWithApp = capabilityInfo.getNodes();

        }
    });

因此,如果mWearNodesWithApp为0,则显示未安装应用程序,如果显示为1,则表示已安装应用程序。

CAPABILITY_WEAR_APP应该是String类型,并且应该具有您在wear应用程序的wear.xml中提到的值而不是电话。请记得为Phone and Wear应用程序提及相同的applicationId。