通知
清除全部

将Android Internet使用限制到无互联网访问的情况下

RSS

(@abhijith)
贵族成员
加入:2年前
帖子:1350
31/03/2021 12:40 PM

我正在构建一个需要通过WiFi网络进行通信的Android应用程序,该网络将无法访问任何Internet。问题是,即使连接WiFi时,Android在WiFi网络上不存在连接Internet时选择使用蜂窝/移动数据。

我已经阅读了许多有关此问题的帖子不是一个选项)。其他解决方案(例如我的代码Bellow)建议使用BindProcesstonetwork(),它在我的Sony Z2上完美工作,但在我已经测试过的其他设备上(全部运行6.0.1)

私人的空白Bindtonetwork(){最后ConnectivityManagerConnectivityManager=((ConnectivityManager沟通GetSystemservice((语境连接_Service);NetworkRequest建筑商建筑商;如果((建造版本SDK_INT> =建造version_codes棒糖{建筑商=新的NetworkRequest建筑商();//设置运输类型do wifi建筑商AddTransportType((网络范围transport_wifi);ConnectivityManagerrequestNetwork((建筑商建造(),,新的ConnectivityManagerNetworkCallback(){@Override上市空白可见((网络网络{如果((建造版本SDK_INT> =建造version_codesm{ConnectivityManagerBindProcesstonetwork((无效的);如果((bar编编码getsid()。包含((“屏幕空间”)){ConnectivityManagerBindProcesstonetwork((网络);}}别的{//此方法在API级别23中被弃用ConnectivityManagersetProcessDefaultNetwork((无效的);如果((bar编编码getsid()。包含((“屏幕空间”)){ConnectivityManagersetProcessDefaultNetwork((网络);}}ConnectivityManagerUnregisternetworkCallback((这个);}});}}

引用
(@ganesh)
贵族成员
加入:2年前
帖子:1362
31/03/2021 12:41 PM

您可以检查是否连接WiFi,然后继续向用户显示对话框,要求他连接到WiFi网络

由于现在在API-23中对方法NetworkInfo.isconnected()进行了弃用,因此这是一种检测Wi-Fi适配器是否打开并使用WiFimanager连接到访问点的方法:

私人的布尔CheckWifionand Connected(){Wifimanagerwifimgr=((WifimanagerGetSystemservice((语境wifi_service);如果((wifimgrIswifienabled()){// Wi-Fi适配器已打开wifiinfowifiinfo=wifimgrgetConnectionInfo();如果((wifiinfogetnetworkid()==-1){返回错误的;//未连接到访问点}返回真的;//连接到访问点}别的{返回错误的;// Wi-Fi适配器关闭}}

回复引用
分享:
Baidu