Мы использовали скрытый API WifiManager, чтобы включить модем Wi-Fi и создать точку доступа. Проблема теперь с API 26 на Android заключается в том, что тег @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) был добавлен к функции setWifiApEnabled, и теперь этот вызов возвращает false, и печатается следующий журнал:
W / WifiManager: PACKAGE_NAME попытался вызвать setWifiApEnabled enabled = true
Читая новую документацию, он говорит, что функция устарела и будет удалена в следующем выпуске, и вместо этого будет использоваться ConnectivityManager#startTethering, если у вызывающего есть соответствующие разрешения, но этот подход имеет ту же проблему без разрешений TETHER_PRIVILEGED. Еще один вариант, представленный в документации, - это использование LocalOnlyHotspot, но это бесполезно для проекта, поскольку созданная точка доступа не имеет подключения к Интернету.
Я также тестировал функцию startSoftAp из скрытого API, но безуспешно, поскольку возникает следующее исключение:
WifiService: ни у пользователя 10164, ни у текущего процесса нет android.permission.NETWORK_STACK
Есть ли обходной путь для активации точки доступа Wi-Fi на новых API? Я также искал альтернативы Wifi-модему, но, похоже, единственной жизнеспособной альтернативой является Bluetooth-модем, недостатком которого является только скорость 3G. Wifi Aware и Wifi P2P также рассматривались, но у них есть проблема, связанная с тем, что подключение к Интернету не разделяется между устройствами.
Есть предложения о том, как к этому подойти?