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



是否有可能以某种方式检测Android应用程序中的Wear迷你应用程序是否已安装在手表中?

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

应用程序更新呢,是否可以检测磨损部分是否已更新?

编辑:

看起来数据 API 甚至消息 API 调用都是在安装应用后缓冲和传递的。但是,这并不能解决应用程序更新的问题。这是可以通过公认的答案来解决的。

一种解决方案是使用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)检测可穿戴设备和手机是否已连接。下面我提到了检测手表是否在 android 中连接到手机的代码。

    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应该是字符串类型,并且应该具有您在磨损中提到的值.xml磨损应用程序而不是电话。请记住为手机和穿戴应用程序提及相同的应用程序ID。

AFAIK,没有开箱即用的解决方案可以做到这一点。

如果您的 Wear 应用

没有活动(因此无法由用户启动),您可以做的是在手持应用处于前台时定期向 Wear 发送类似IS_INSTALLED消息,直到 Wear 不会将其版本号放入数据层。在应用程序更新时,您可以在数据层中检查版本号,如果它低于当前版本 - 重复该过程。

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

最新更新