android6.0 wifi连接

Android6.0Wifi连接过程基本和之前的版本一致,但是,在获取附近热点的时候,却出现了一些差别,这差别主要包括获取权限的方式发生了改变,以及getScanResults这个函数有点怪异的行为...

1.android6.0之前的版本获取附近的wifi热点

1.1打开和关闭wifi

setWifiEnabled(true/false);

1.2扫描附近热点

startScan();之后,接受WifiManager.SCAN_RESULTS_AVAILABLE_ACTION的广播会触发,在这个广播中调用getScanResults()方法可以获得一个List<ScanResult>,它里面的每一个条目就是一个可连接的热点。

1.3代码

<span style="font-family:SimSun;font-size:14px;background-color: rgb(255, 255, 255);">public class MainActivity extends AppCompatActivity {
    WifiManager wifi;
    int size = 0;
    List<ScanResult> results;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
        if (wifi.isWifiEnabled() == false)
        {
            Toast.makeText(getApplicationContext(), "wifi is disabled..making it enabled", Toast.LENGTH_LONG).show();
            wifi.setWifiEnabled(true);
            Log.d("hello","wifi enabled");
        }
        wifi.startScan();
        registerReceiver(new BroadcastReceiver()
        {
            @Override
            public void onReceive(Context c, Intent intent)
            {
                results = wifi.getScanResults();
                size = results.size();
                for(int i=0;i<size;i++){
                    Log.d("hello",results.get(i).toString());
                }
            }
        }, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
    }
}</span>
这样就可以打印出所有的可连接wifi信息。

总结来说第一步:setWifiEnabled(true);第二步:startScan();

2.android6.0获取wifi热点

然而同样的问题在android6.0中确实不可以的。原因有两个:

第一:没有权限

android6.0访问wifi新增了两个权限:

<span style="font-family:SimSun;font-size:14px;background-color: rgb(255, 255, 255);"><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /></span>

android6.0之前,这两个权限在AndroidMenifest文件中声明就可以了,但是android6.0中,又增加了运行时权限。运行是权限这里不多说,总之,这两个权限是要运行时获取的,在Menifest文件中声明是行不通的。当然,为了不那么麻烦,你可以把targetSdkVersion 改为23以下,这样就不存在运行时权限的问题了。如果你不想这么做,那么不妨试试android6.0的运行时权限:
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值