@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo gprs = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (intent.getAction().equals("Android.net.conn.CONNECTIVITY_CHANGE")) {
//移动数据连接上时
if (gprs.isConnected()){
}
//wifi连接上时
if (wifi.isConnected()) {
// 切换网络,关闭wifi,开启流量
if (isShow) {//做一个标记,避免多次弹窗的叠加bug,初始值为true,重要
switchNetwork(context);
}
}
//断网时
if (!netManager.getGRPS().isConnected() || !netManager.getGRPS().isConnected()) {
}
}
private void switchNetwork(final Context context) {
AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.AlertDialog);
builder.setTitle("提示");
builder.setMessage("请关闭wifi,打开移动网络");
builder.setCancelable(false);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 控制网络的开关
controlNetWork(context);
isShow = true;
}
});
AlertDialog dialog = builder.create();
// 需要把对话框的类型设为TYPE_SYSTEM_ALERT,否则对话框无法在广播接收器里弹出
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
dialog.show();
isShow = false;
}
private void controlNetWork(Context context) {
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
// 允许流量,阻止wifi
wifiManager.setWifiEnabled(false);//false表示断开WiFi
NetManager netManager = new NetManager(context);
if (!netManager.getGRPS().isConnected()) {
ConnectivityManager gprsCM = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
Class conmanClass;
try {
conmanClass = Class.forName(gprsCM.getClass().getName());
final Field iConnectivityManagerField = conmanClass.getDeclaredField("mService");
iConnectivityManagerField.setAccessible(true);
final Object iConnectivityManager = iConnectivityManagerField.get(gprsCM);
final Class iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName());
final Method setMobileDataEnabledMethod = iConnectivityManagerClass
.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
setMobileDataEnabledMethod.setAccessible(true);//true表示连接网络
setMobileDataEnabledMethod.invoke(iConnectivityManager, true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
<receiver
android:name=".NetChangeReceiver"
android:label="NetChangeReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
<uses-permission Android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有