WIFI相关

来源:互联网 发布:网络8888端口 编辑:程序博客网 时间:2024/06/05 16:48
packageorg.sunchao;

importjava.util.List;

importandroid.content.Context;
importandroid.net.wifi.ScanResult;
importandroid.net.wifi.WifiConfiguration;
importandroid.net.wifi.WifiInfo;
importandroid.net.wifi.WifiManager;
importandroid.net.wifi.WifiManager.WifiLock;
importandroid.util.Log;

publicclassWifiAdmin {
     privatefinalstaticStringTAG="WifiAdmin";
     privateStringBuffermStringBuffer=newStringBuffer();
     privateList<ScanResult>listResult;
     privateScanResultmScanResult;
     // 定义WifiManager对象
     privateWifiManagermWifiManager;
     // 定义WifiInfo对象
     privateWifiInfomWifiInfo;
     // 网络连接列表
     privateList<WifiConfiguration>mWifiConfiguration;
     // 定义一个WifiLock
     WifiLockmWifiLock;

     /**
      * 构造方法
      */
     publicWifiAdmin(Contextcontext) {
          mWifiManager= (WifiManager)context
                   .getSystemService(Context.WIFI_SERVICE);
          mWifiInfo=mWifiManager.getConnectionInfo();
     }

     /**
      * 打开Wifi网卡
      */
     publicvoidopenNetCard() {
          if(!mWifiManager.isWifiEnabled()) {
              mWifiManager.setWifiEnabled(true);
          }
     }

     /**
      * 关闭Wifi网卡
      */
     publicvoidcloseNetCard() {
          if(mWifiManager.isWifiEnabled()) {
              mWifiManager.setWifiEnabled(false);
          }
     }

     /**
      * 检查当前Wifi网卡状态
      */
     publicvoidcheckNetCardState() {
          if(mWifiManager.getWifiState() == 0) {
              Log.i(TAG,"网卡正在关闭");
          }elseif(mWifiManager.getWifiState() == 1) {
              Log.i(TAG,"网卡已经关闭");
          }elseif(mWifiManager.getWifiState() == 2) {
              Log.i(TAG,"网卡正在打开");
          }elseif(mWifiManager.getWifiState() == 3) {
              Log.i(TAG,"网卡已经打开");
          }else{
              Log.i(TAG,"---_---晕......没有获取到状态---_---");
          }
     }

     /**
      * 扫描周边网络
      */
     publicvoidscan() {
          mWifiManager.startScan();
          listResult=mWifiManager.getScanResults();
          if(listResult!=null) {
              Log.i(TAG,"当前区域存在无线网络,请查看扫描结果");
          }else{
              Log.i(TAG,"当前区域没有无线网络");
          }
     }

     /**
      * 得到扫描结果
      */
     publicString getScanResult() {
          // 每次点击扫描之前清空上一次的扫描结果
          if(mStringBuffer!=null) {
              mStringBuffer=newStringBuffer();
          }
          // 开始扫描网络
          scan();
          listResult=mWifiManager.getScanResults();
          if(listResult!=null) {
              for(inti= 0;i<listResult.size();i++) {
                   mScanResult=listResult.get(i);
                   mStringBuffer=mStringBuffer.append("NO.").append(i+ 1)
                             .append(" :").append(mScanResult.SSID).append("->")
                             .append(mScanResult.BSSID).append("->")
                             .append(mScanResult.capabilities).append("->")
                             .append(mScanResult.frequency).append("->")
                             .append(mScanResult.level).append("->")
                             .append(mScanResult.describeContents()).append("\n\n");
              }
          }
          Log.i(TAG,mStringBuffer.toString());
          returnmStringBuffer.toString();
     }

     /**
      * 连接指定网络
      */
     publicvoidconnect() {
          mWifiInfo=mWifiManager.getConnectionInfo();
          
     }

     /**
      * 断开当前连接的网络
      */
     publicvoiddisconnectWifi() {
          intnetId= getNetworkId();
          mWifiManager.disableNetwork(netId);
          mWifiManager.disconnect();
          mWifiInfo=null;
     }

     /**
      * 检查当前网络状态
      *
      *@returnString
      */
     publicvoidcheckNetWorkState() {
          if(mWifiInfo!=null) {
              Log.i(TAG,"网络正常工作");
          }else{
              Log.i(TAG,"网络已断开");
          }
     }

     /**
      * 得到连接的ID
      */
     publicintgetNetworkId() {
          return(mWifiInfo==null) ? 0 :mWifiInfo.getNetworkId();
     }

     /**
      * 得到IP地址
      */
     publicintgetIPAddress() {
          return(mWifiInfo==null) ? 0 :mWifiInfo.getIpAddress();
     }

     // 锁定WifiLock
     publicvoidacquireWifiLock() {
          mWifiLock.acquire();
     }

     // 解锁WifiLock
     publicvoidreleaseWifiLock() {
          // 判断时候锁定
          if(mWifiLock.isHeld()) {
              mWifiLock.acquire();
          }
     }

     // 创建一个WifiLock
     publicvoidcreatWifiLock() {
          mWifiLock=mWifiManager.createWifiLock("Test");
     }

     // 得到配置好的网络
     publicList<WifiConfiguration> getConfiguration() {
          returnmWifiConfiguration;
     }

     // 指定配置好的网络进行连接
     publicvoidconnectConfiguration(intindex) {
          // 索引大于配置好的网络索引返回
          if(index>=mWifiConfiguration.size()) {
              return;
          }
          // 连接配置好的指定ID的网络
          mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,
                   true);
     }

     // 得到MAC地址
     publicString getMacAddress() {
          return(mWifiInfo==null) ?"NULL":mWifiInfo.getMacAddress();
     }

     // 得到接入点的BSSID
     publicString getBSSID() {
          return(mWifiInfo==null) ?"NULL":mWifiInfo.getBSSID();
     }

     // 得到WifiInfo的所有信息包
     publicString getWifiInfo() {
          return(mWifiInfo==null) ?"NULL":mWifiInfo.toString();
     }

     // 添加一个网络并连接
     publicintaddNetwork(WifiConfigurationwcg) {
          intwcgID=mWifiManager.addNetwork(mWifiConfiguration.get(3));
          mWifiManager.enableNetwork(wcgID,true);
          returnwcgID;
     }
}



我是一条你看不见的分割线





  1. 打开RE,进入/data/misc/wifi/wpa_supplicant.conf

  2. 会看到有很多类似network={****}字段:

    比如:

    network={

    ssid="BH02"

    psk="86625757"

    key_mgmt=WPA-PSK

    priority=4

    }

    其中ssid表示wifi名称;

    psk表示wifi密码。




我是一条你看不见的分割线


打开或者关闭飞行模式

//打开
privatevoidoff() {
          
          try{
              Processp= Runtime.getRuntime().exec("su");
              DataOutputStreamdos=newDataOutputStream(p.getOutputStream());
              dos.writeBytes("settings put global airplane_mode_on 1\n");
              dos.flush();
              dos.writeBytes("am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true\n");
              dos.flush();
              dos.close();
              
          }catch(IOExceptione) {             
              e.printStackTrace();
          }
     }
     
//关闭
     privatevoidon() {
          try{
              Processp= Runtime.getRuntime().exec("su");
              DataOutputStreamdos=newDataOutputStream(p.getOutputStream());
              dos.writeBytes("settings put global airplane_mode_on 0\n");
              dos.flush();
              dos.writeBytes("am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false\n");
              dos.flush();
              dos.close();
              
          }catch(Exceptione) {           
          }
     }


权限
   <uses-permissionandroid:name="android.permission.WRITE_SETTINGS"/>

我是一条你看不见的分割线
0 0