我在android中有一个关于NetworkListener的问题。
我已经实现了一个新类,它可以监听是否存在互联网连接(包括数据和wifi)。
代码如下:
package com.gelliesmedia.thumbqoo.services;
public class NetworkStateReceiver extends BroadcastReceiver {
@SuppressWarnings("deprecation")
public void onReceive(Context context, Intent intent) {
Log.d("THUMBQOO","Network connectivity change");
if(intent.getExtras()!=null) {
NetworkInfo ni=(NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO);
if(ni!=null && ni.getState()==NetworkInfo.State.CONNECTED) {
Log.i("THUMBQOO","Network "+ni.getTypeName()+" connected");
}
}
if(intent.getExtras().getBoolean(ConnectivityManager.EXTRA_NO_CONNECTIVITY,Boolean.FALSE)) {
Log.d("THUMBQOO","There's no network connectivity");
}
}
}
这就是我如何在清单中注册它:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<receiver android:name="com.gelliesmedia.thumbqoo.services.NetworkStateReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
当我使用模拟器(genymotion)对其进行测试时,即使我拔掉了我的PC LAN电缆,也没有给我任何回复信息。
我是否必须在我拥有的所有Activity类中使用NetworkStateReceiver类?
即
Public class MainActivity extends MainActivity{
onCreate(...)
NetworkStateReceiver x = new NetworkStateReceiver(); <--- like this?
}
我还需要在这做什么吗?有人能指出我正确的方向吗?
答案 0 :(得分:0)
尝试这种方式:
public class NetworkReciver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent arg1) {
// TODO Auto-generated method stub
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetInfo = connectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
boolean isConnected = activeNetInfo != null
&& activeNetInfo.isConnectedOrConnecting();
GeneralClass.isHaveInternet = isConnected ? true : false;
if (isConnected)
Log.e("NET-------------->", "connecte" + isConnected);
else
Log.e("NET------------->", "not connecte" + isConnected);
}
}
检查应用中的连接。
if (GeneralClass.isHaveInternet)
Log.e("NET-------------->", "connecte" + isConnected);
else
Log.e("NET------------->", "not connecte" + isConnected);
其中GeneralClass.isHaveInternet为public static boolean isHaveInternet = true;