扫描wifi热点

这是从网上收集到的一段扫描WIFI热点的代码,如下:
  1. package com.android.wifitester; 

  2. import java.util.List; 
  3. import android.app.Activity; 
  4. import android.content.BroadcastReceiver; 
  5. import android.content.Context; 
  6. import android.content.Intent; 
  7. import android.content.IntentFilter; 
  8. import android.net.wifi.ScanResult; 
  9. import android.net.wifi.WifiManager; 
  10. import android.os.Bundle; 
  11. import android.view.Menu; 
  12. import android.view.MenuItem; 
  13. import android.widget.TextView; 

  14. public class WifiTester extends Activity { 
  15.      TextView mainText; 
  16.      WifiManager mainWifi; 
  17.      WifiReceiver receiverWifi; 
  18.      List<ScanResult> wifiList; 
  19.      StringBuilder sb = new StringBuilder(); 
  20.       
  21.     public void onCreate(Bundle savedInstanceState) { 
  22.         super.onCreate(savedInstanceState); 
  23.         setContentView(R.layout.main); 
  24.         mainText = (TextView) findViewById(R.id.mainText); 
  25.         mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
  26.         
  27.         receiverWifi = new WifiReceiver(); 
  28.         registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); 
  29.         mainWifi.startScan(); 
  30.         mainText.setText("\n开始扫描...\n"); 
  31.     } 

  32.      public boolean onCreateOptionsMenu(Menu menu) { 
  33.           menu.add(0, 0, 0, "刷新"); 
  34.           return super.onCreateOptionsMenu(menu); 
  35.      } 

  36.      public boolean onMenuItemSelected(int featureId, MenuItem item) { 
  37.           mainWifi.startScan(); 
  38.           mainText.setText("开始扫描"); 
  39.           return super.onMenuItemSelected(featureId, item); 
  40.      } 

  41.      protected void onPause() { 
  42.           unregisterReceiver(receiverWifi); 
  43.           super.onPause(); 
  44.      } 

  45.      protected void onResume() { 
  46.           registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); 
  47.           super.onResume(); 
  48.      } 
  49.       
  50.      class WifiReceiver extends BroadcastReceiver { 
  51.           public void onReceive(Context c, Intent intent) { 
  52.                sb = new StringBuilder(); 
  53.                wifiList = mainWifi.getScanResults(); 
  54.              for(int i = 0; i < wifiList.size(); i++){ 
  55.                sb.append(new Integer(i+1).toString() + "."); 
  56.                sb.append((wifiList.get(i)).toString()); 
  57.                sb.append("\n"); 
  58.              } 
  59.              mainText.setText(sb); 
  60.           } 
  61.      } 

  62. }

你同时需要申请如下权限:


  1. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
  2. <uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES"></uses-permission> 
  3. <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission> 
  4. <uses-permission android:name="android.permission.INTERNET"></uses-permission>
  5. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> 
  6. <uses-permission android:name="android.permission.MODIFY_PHONE_STATE"></uses-permission>




另: 关于WIFI的开启关闭与连接热点
1、需要申请的权限
  1. android.permission.ACCESS_WIFI_STATE 
  2. android.permission.CHANGE_WIFI_STATE 
  3. android.permission.WAKE_LOCK
复制代码
2、相关操作的代码
  1.                 WifiManager wifi = (WifiManager) context
  2.                                 .getSystemService(Context.WIFI_SERVICE);
  3.                 if (!wifi.isWifiEnabled()) {  //如果wifi没有开启,则开启。
  4.                         wifi.setWifiEnabled(true);
  5.                 }

  6.                 WifiConfiguration wc = new WifiConfiguration();
  7.                 wc.SSID = "\"SSID\"";      //配置wifi的SSID,即该热点的名称,如:TP-link_xxx
  8.                 wc.preSharedKey = "\"password\"";            //该热点的密码
  9.                 wc.hiddenSSID = true;
  10.                 wc.status = WifiConfiguration.Status.ENABLED;
  11.                 wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
  12.                 wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
  13.                 wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
  14.                 wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
  15.                 wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
  16.                 wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
  17.                 int res = wifi.addNetwork(wc);
  18.                 Log.d("WifiPreference", "add Network returned " + res);
  19.                 boolean b = wifi.enableNetwork(res, true);
  20.                 Log.d("WifiPreference", "enableNetwork returned " + b);
复制代码
3、注意
如果遇到force-close, 选wait即可, 因为启动wifi需要几秒钟, UI如果5妙钟还没反映的话, 系统会给你这个force close exception




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值