如何以编程方式启用Android O WiFi Hotspot

Tia*_*ira 6 android android-networking android-wifi hotspot

我们一直在使用WifiManager隐藏API来启用Wifi网络共享并创建一个接入点.Android上的API 26现在的问题是标签@RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED)已添加到setWifiApEnabled函数中,现在调用返回false并打印以下日志:

W/WifiManager:PACKAGE_NAME尝试调用setWifiApEnabled enabled = true

阅读新文档时,它表示该函数已弃用,并将在即将发布的版本中删除,而是ConnectivityManager#startTethering在调用者具有适当权限时使用,但此方法在没有TETHER_PRIVILEGED权限时也存在同样的问题.文档中提供的另一个选项是使用,LocalOnlyHotspot但这对项目没用,因为创建的热点没有Internet连接.

我还使用startSoftAp隐藏API中的函数进行了测试,但由于引发了以下异常,因此没有成功的结果:

WifiService:用户10164和当前进程都没有android.permission.NETWORK_STACK

是否有任何解决方法可以在较新的API上激活Wifi热点?我也搜索了Wifi网络共享的替代方案,但唯一可行的选择似乎是蓝牙网络共享,只有获得3G速度的缺点.还考虑了Wifi Aware和Wifi P2P,但这些都存在互联网连接不能在设备之间共享的问题.

有关如何处理此问题的任何建议?

小智 2

不,在 Android O 中,它们提高了安全性,因此现在您无法通过反射调用“startTethering”,因为它需要隐藏的 OnStartTetheringCallback,因此除非您使用 android build 编译系统 apk,否则您可以使用该 API。如果需要,您可以使用 LocalOnlyHotspotCallback