当前位置: 代码迷 >> Android >> SQLite根据wifi扫描创建多表的有关问题
  详细解决方案

SQLite根据wifi扫描创建多表的有关问题

热度:12   发布时间:2016-04-28 05:03:13.0
SQLite根据wifi扫描创建多表的有关问题 - Android
当前位置: 代码迷 » Android » SQLite根据wifi扫描创建多表的有关问题

SQLite根据wifi扫描创建多表的有关问题

www.MyException.Cn,网友分享于:2014-06-30   浏览:2次
SQLite根据wifi扫描创建多表的问题
有一个想法是通过WIFI扫描时,例如扫描到了20个wifi,然后能自动为每一个WIFI创建一张它的数据表。请教过老师说可以设置变量,利用wifi的MAC地址来唯一识别建表。后面在存储数据的时候把一个wifi的数据单独的存在那个表中。    不过不懂得怎么实现,求高手解答,能写写源码最好,讲的清楚点,我刚接触安卓
------解决思路----------------------
其实就是用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));



  相关解决方案