首页 > 解决方案 > 多播和即时应用

问题描述

通常我可以使用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_STATEINTERNET权限,有没有办法找到本地服务器 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

标签: javaandroidpermissionsmulticastandroid-instant-apps

解决方案


推荐阅读