是否有可能检测到Android应用中的Wear mini应用程序是否已安装在手表中?
我有一个应用程序,在手表中安装了Wear部件之前无法在手机上使用,因此我希望在此之前阻止所有交互。
应用程序更新如何,是否可以检测Wear部件是否已更新?
修改
在安装应用程序后,看起来像Data API甚至Message API调用都会被缓冲并传递。但是,这并未解决应用更新的问题。这可以通过接受的答案来解决。
答案 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。