其实就是用MAC来做表名(当然MAC要变化一下。那个:是不能直接用在表名中的)。
主要代码:
private WifiManager wifiManager;
private List<ScanResult> scanResultsList;//放wifi扫描结果
private SQLiteDatabase db=null;//数据库
String tblName="";//表名,由MAC动态生成出来的。
BroadcastReceiver bcr=null;//获取扫描结果的Receiver@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  detectonbButton = (Button) findViewById(R.id.submit);//开始扫描wifi的按钮
  wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);//获取到WIFI服务
   detectonbButton.setOnClickListener(new OnClickListener() {//当单击该按钮时,开始wifi 扫描

@Override
public void onClick(View v) {
     wifiManager.startScan();//启动wifi扫描
}
});//创建一个全局可用的数据库,文件名是:wifi_data.db
 try {
    db=this
        .createPackageContext("你的包名全称", MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE)
        .openOrCreateDatabase(this.getFilesDir()+"/wifi_data.db",Context.MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE,null  );
  } 
   catch (NameNotFoundException e1) {
// TODO Auto-generated catch block
//e1.printStackTrace();
Toast.makeText(this, "创建数据库出错:"+e1.getMessage(), Toast.LENGTH_LONG).show();
return;
   }
//获取wifi扫描结果的Receiver
//获取扫描结果
  bcr=new BroadcastReceiver() {
     public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if(intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION))
          {
//获取wifi的扫描结果
scanResultsList=wifiManager.getScanResults();
//对每一个wifi AP 
for(int i=0;i<=scanResultsList.size()-1;i++)
{
                  //取出当前的wifi AP
   ScanResult e=scanResultsList.get(i);
                  //获取它的MAC
   String ssid=e.BSSID.trim().toLowerCase();//假设该MAC可直接做表名。否则要将其中的特殊符号:改为_。
                   tblName=ssid;//表名,由MAC动态生成出来的。
                  //在前边创建的db中,创建该表tblName,字段:id--主键。ssid-ap名称。level--wifi信号强度
                  String sql= "create table if not exists  "
                              +tblName 
                              +" (  id integer primary key autoincrement,ssid,level )  ";
                 //创建该表.表名,由MAC动态生成出来的。
                  try{
       db.execSQL(sql);
    }catch(Exception e){
                  Toast.makeText(MyActivity.this, "创建数据表出错:"+e1.getMessage(), Toast.LENGTH_LONG).show();
}
}//for
            }//if
    };//将bcr注册,才能收到扫描结果的消息
this.registerReceiver(bcr, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));

解决方案 »

  1.   

    接着想把数据对应的储存起来该怎么办? 因为之前创建数据库时利用DatabaseHelper助手类来实现的。  另外 String ssid=e.BSSID.trim().toLowerCase();//假设该MAC可直接做表名。否则要将其中的特殊符号:改为_。这里要怎么将冒号 去掉或者改为_?
      

  2.   

    首先,怀疑你老师水平有点问题。。这种情形一个表就够了,这是大量相同类型的数据,为何要用多个表?这种设计很奇葩啊。就创建一个wifi的表,字段有MAC地址,wifi的id(就是你去连的时候显示的名字),等等字段。
      

  3.   


    这个已经实现了,只不过里面数据量很大,而且只需要几个WIFI的信息,分开来会更加明朗吧。