Обычно я могу использовать 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