今天在做判断是否有网络连接时一直报错,后来才知道缺少了权限。
大家都知道Android连网需要添加权限:
<uses-permission android:name="android.permission.INTERNET" />
但是我们在判断时也需要添加访问权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
或
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
判断的思路如下:
首先获取网络通讯类的实例
ConnectivityManagercwjManager(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
使用cwjManager.getActiveNetworkInfo().isAvailable();来返回是否有效,
如果为True则表示当前Android手机已经联网,可能是WiFi或GPRS、HSDPA等等,
具体的可以通过ConnectivityManager 类的getActiveNetworkInfo() 方法判断详细的接入方式。
具体的代码如下:
ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if(networkInfo == null || !networkInfo.isAvailable()) { //当前有可用网络 } else { //当前无可用网络 }
当然,你也可以通过
NetworkInfo[] info = connectivity.getAllNetworkInfo();