java - 多播和即时应用
问题描述
通常我可以使用MulticastSocket或网络服务发现通过 Wi-Fi 网络查找服务器
try (MulticastSocket multicastSocket = new MulticastSocket(Network.DISCOVERY_PORT)) {
multicastSocket.setNetworkInterface(Network.getWifiInterface());
multicastSocket.setSoTimeout((int) (3 * DateUtils.SECOND_IN_MILLIS));
multicastSocket.joinGroup(InetAddress.getByName(Network.DISCOVERY_IP));
...
}
它工作正常,但是我无法在Instant App模块中使用这些方法,因为它需要不允许的ACCESS_WIFI_STATE权限。
知道即时应用程序允许ACCESS_NETWORK_STATE和INTERNET权限,有没有办法找到本地服务器 IP,避免这个错误?
java.net.BindException: bind failed: EACCES (Permission denied)
可用的权限是:
ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION ACCESS_NETWORK_STATE BILLING – Deprecated as of Play Billing Library 1.0. CAMERA INSTANT_APP_FOREGROUND_SERVICE – Only in Android 8.0 (API level 26) and higher. INTERNET READ_PHONE_NUMBERS – Only in Android 8.0 (API level 26) and higher. RECORD_AUDIO VIBRATE WAKE_LOCK
解决方案
推荐阅读
- python - 使用包含带有 span 元素的文本时的 Python selenium 问题
- node.js - Cloud Functions, Firebase: parsing function triggers error
- javascript - 使用 Express-Handlebars/NodeJs 构建 DOM 递归
- vagrant - 在 vagrant 上运行时无法浏览 consul ui(来自 consul 教程)
- r - 如何在 r 中缩放 ggplot2 中 x 轴的时间(小时)?
- java - jetbrains.exodus.ExodusException:0 毫秒后无法获取环境锁
- php - 如何在php中显示项目的数量
- ansible - Ansible:当我禁用防火墙时,总是显示状态改变
- javascript - Queryselector 删除多余的逗号分隔的项目列表
- spring-boot - 为 application.properties 文件赋值 Spring boot