让我们假设我有一个扩展我的应用程序的Android服装应用程序。现在我发送我的应用程序,用户正在使用它。该应用程序向所有连接的节点发送消息,如下所示:
//例如。将字符串发送到Android服装网络上的所有连接节点:
NodeApi.GetConnectedNodesResult nodes = Wearable.NodeApi.getConnectedNodes( apiClient ).await();
String myMessage= "A cool Message";
for(Node node : nodes.getNodes()) {
MessageApi.SendMessageResult result = Wearable.MessageApi.sendMessage(
apiClient, node.getId(), path, myMessage.getBytes() ).await();
//where path variable can be a string such as “/cool_message”
}
并且世界各地都很好,因为只有连接的节点可以获取消息,并且他们必须知道路径变量“/ cool_message”
现在假设有一个流氓app也有一个可穿戴设备和一个连接节点。并且假设它不是为路径过滤,所以它在收听时获取所有消息。如何保护其他可穿戴应用无法看到我的消息。流氓可穿戴应用程序监听代码将如下所示:
@Override
public void onMessageReceived(MessageEvent messageEvent) {
Intent startIntent = new Intent(this, MainActivity.class);
startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startIntent.putExtra("DATA", messageEvent.getData());
startActivity(startIntent);
}
请注意,此处我没有打电话给 if (messageEvent.getPath().equals(“/cool_message”))
。所以流氓可穿戴者可以收听任何消息。我怎么不广播我的消息到这个节点?有辩护吗?
答案 0 :(得分:1)
磨损框架在使用相同证书签名且具有相同包名的应用之间传递消息,因此只有您的应用可以看到您的应用在不同节点上发送的消息,无论路径如何等。因此,如果使用两个不同证书签名的两个应用程序使用相同的路径,则每个应用程序只能看到自己的消息。