监听手机网络状态
程序员文章站
2024-01-16 20:32:40
...
监听手机网络状态
1、实现接收网络状态变化的广播接收者
public class NetworkChangedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int netWorkStates = NetworkUtils.getNetWorkState(context);
if (SystemUtils.isAppTopRunning(context)){
switch (netWorkStates) {
case NetworkUtils.TYPE_NONE:
ToastUtils.showLongToast(context, R.string.internet_disconnect);
break;
case NetworkUtils.TYPE_MOBILE:
// ToastUtils.showShortToast(context,R.string.current_use_4g);
break;
case NetworkUtils.TYPE_WIFI:
// ToastUtils.showShortToast(context,R.string.wifi_connected);
break;
default:
break;
}
}
}
}
网络状态判断工具类
/**
* 网络状态工具类
* @describe
*
* @author Jeff
* @date 2018/2/7.
*/
public class NetworkUtils {
public static final int TYPE_NONE = -1;//没网
public static final int TYPE_MOBILE = 0;//移动网络
public static final int TYPE_WIFI = 1;//WIFI
/**
* 获取网络状态
*
* @param context
* @return one of TYPE_NONE, TYPE_MOBILE, TYPE_WIFI
* @describe need access permission android.permission.ACCESS_NETWORK_STATE
*/
public static int getNetWorkState(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
if (activeNetworkInfo == null || !activeNetworkInfo.isConnected()) {
return TYPE_NONE;//没网
}
int type = activeNetworkInfo.getType();
switch (type) {
case ConnectivityManager.TYPE_MOBILE:
return TYPE_MOBILE;//移动数据
case ConnectivityManager.TYPE_WIFI:
return TYPE_WIFI;//WIFI
default:
break;
}
return TYPE_NONE;
}
}
2、在清单文件中注册广播接收者,并声明相关权限
注册
<receiver android:name=".common.receiver.NetworkChangedReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
上一篇: PHP-SOCKETS初步编程
下一篇: unset火狐无效