zoukankan      html  css  js  c++  java
  • Android网络开启、关闭整理

    package com.my.device_admin.business;
    
    import java.lang.reflect.Method;
    
    import android.content.Context;
    import android.content.Intent;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    import android.net.wifi.WifiManager;
    import android.provider.Settings;
    
    public class NetworkManager {
    
    	private Context context;
    	private ConnectivityManager connManager;
    
    	public NetworkManager(Context context) {
    		this.context = context;
    		connManager = (ConnectivityManager) this.context
    				.getSystemService(Context.CONNECTIVITY_SERVICE);
    	}
    
    	/**
    	 * @return 网络是否连接可用
    	 */
    	public boolean isNetworkConnected() {
    
    		NetworkInfo networkinfo = connManager.getActiveNetworkInfo();
    
    		if (networkinfo != null) {
    			return networkinfo.isConnected();
    		}
    
    		return false;
    	}
    
    	/**
    	 * @return wifi是否连接可用
    	 */
    	public boolean isWifiConnected() {
    
    		NetworkInfo mWifi = connManager
    				.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    
    		if (mWifi != null) {
    			return mWifi.isConnected();
    		}
    
    		return false;
    	}
    
    	/**
    	 * 当wifi不能访问网络时,mobile才会起作用
    	 * @return GPRS是否连接可用
    	 */
    	public boolean isMobileConnected() {
    
    		NetworkInfo mMobile = connManager
    				.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
    
    		if (mMobile != null) {
    			return mMobile.isConnected();
    		}
    		return false;
    	}
    
    	/**
    	 * GPRS网络开关 反射ConnectivityManager中hide的方法setMobileDataEnabled 可以开启和关闭GPRS网络
    	 * 
    	 * @param isEnable
    	 * @throws Exception
    	 */
    	public void toggleGprs(boolean isEnable) throws Exception {
    		Class<?> cmClass = connManager.getClass();
    		Class<?>[] argClasses = new Class[1];
    		argClasses[0] = boolean.class;
    
    		// 反射ConnectivityManager中hide的方法setMobileDataEnabled,可以开启和关闭GPRS网络
    		Method method = cmClass.getMethod("setMobileDataEnabled", argClasses);
    		method.invoke(connManager, isEnable);
    	}
    
    	/**
    	 * WIFI网络开关
    	 * 
    	 * @param enabled
    	 * @return 设置是否success
    	 */
    	public boolean toggleWiFi(boolean enabled) {
    		WifiManager wm = (WifiManager) context
    				.getSystemService(Context.WIFI_SERVICE);
    		return wm.setWifiEnabled(enabled);
    
    	}
    	
        /**
         * 
         * @return 是否处于飞行模式
         */
        public boolean isAirplaneModeOn() {  
            // 返回值是1时表示处于飞行模式  
            int modeIdx = Settings.System.getInt(context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0);  
            boolean isEnabled = (modeIdx == 1);
            return isEnabled;
        }  
        /**
         * 飞行模式开关
         * @param setAirPlane
         */
        public void toggleAirplaneMode(boolean setAirPlane) {  
            Settings.System.putInt(context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, setAirPlane ? 1 : 0);  
            // 广播飞行模式信号的改变,让相应的程序可以处理。  
            // 不发送广播时,在非飞行模式下,Android 2.2.1上测试关闭了Wifi,不关闭正常的通话网络(如GMS/GPRS等)。  
            // 不发送广播时,在飞行模式下,Android 2.2.1上测试无法关闭飞行模式。  
            Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);  
            // intent.putExtra("Sponsor", "Sodino");  
            // 2.3及以后,需设置此状态,否则会一直处于与运营商断连的情况  
            intent.putExtra("state", setAirPlane);  
            context.sendBroadcast(intent);  
        }
    }
    

      WiFi、GPRS、飞行模式的开启、关闭以及一些状态的检测

  • 相关阅读:
    架构,改善程序复用性的设计~(第一和第二讲目录)
    Linq To Sql模式中自动生成TSQL增删改操作系列~PropertyChanged事件实现在子类中记录属性的变化,在基类中进行统一处理
    架构,改善程序复用性的设计~第三讲 实现一种功能的代码只能出现在一处(续)
    oracle 11g PL/SQL Programming学习十四
    [翻译][php扩展和嵌入式]第19章设置宿主环境
    [翻译][php扩展和嵌入式]第17章php源代码的配置和链接
    40+精彩的HTML5实例和教程
    使用maven编译YCSB0.1.4对cassandra进行性能测试
    [翻译][php扩展和嵌入式]第18章php的扩展自动生成
    js 模仿windows 桌面图标排列算法
  • 原文地址:https://www.cnblogs.com/huazaizai/p/3398675.html
Copyright © 2011-2022 走看看