我使用Google地图创建了一个Android应用程序.现在我想检查互联网连接是否可用.我在谷歌搜索,最后我通过Stackoverflow得到了解决方案:
boolean HaveConnectedWifi = false;
boolean HaveConnectedMobile = false;
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] netInfo = cm.getAllNetworkInfo();
for (NetworkInfo ni : netInfo)
{
if (ni.getTypeName().equalsIgnoreCase("WIFI"))
if (ni.isConnected())
HaveConnectedWifi = true;
if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
if (ni.isConnected())
HaveConnectedMobile = true;
}
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Run Code Online (Sandbox Code Playgroud)
我写了我的在线Google地图代码,如果它返回true,则返回true和离线代码.
我的问题是它显示互联网连接即使不是.我哪里弄错了?
Mar*_*son 12
尝试使用NetworkInfo ni = cm.getActiveNetworkInfo();而不是NetworkInfo ni = cm.getAllNetworkInfo();.任何时候都应该只有一个活动数据网络,因为Android将使用最好的可用数据网络并关闭其他数据网络以节省电池电量.
此外,我倾向于使用ni.isConnectedOrConnecting();而不是ni.isConnected();因为它可以更好地捕获过渡状态.
我也使用ni.getType() == ConnectivityManager.TYPE_WIFI而不是ni.getTypeName().equalsIgnoreCase("WIFI")因为比较两个int值比比较两个字符串更有效.
以下代码适用于我:
boolean HaveConnectedWifi = false;
boolean HaveConnectedMobile = false;
ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if ( ni != null )
{
if (ni.getType() == ConnectivityManager.TYPE_WIFI)
if (ni.isConnectedOrConnecting())
HaveConnectedWifi = true;
if (ni.getType() == ConnectivityManager.TYPE_MOBILE)
if (ni.isConnectedOrConnecting())
HaveConnectedMobile = true;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3826 次 |
| 最近记录: |