在处理6.0 权限的时候,在activity的onResume中startScan后,在收到
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION
广播后,首先去判断是否有权限,使用的代码如下:
private boolean checkPermission() { List<String> permissionsList = new ArrayList<String>(); if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { permissionsList.add(Manifest.permission.ACCESS_FINE_LOCATION); } if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { permissionsList.add(Manifest.permission.ACCESS_COARSE_LOCATION); } if (permissionsList.size() > 0) { ActivityCompat.requestPermissions((Activity) mContext, permissionsList.toArray(new String[permissionsList.size()]), REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS); return false; } return true; }
同时复写onRequestPermissionsResult
方法,在该方法中判断,如果已经获取到对应的权限后,就通过getScanResults() 获取一次wifi列表。onRequestPermissionsResult
方法如下:
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS: if (permissions.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED || (permissions.length == 2 && grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED)){ List<ScanResult> scanResults = mWifi.getScanResults(); //list is still empty } else { // Permission Denied Toast.makeText(mContext, getString(R.string.permission_deny), Toast.LENGTH_LONG).show(); } break; } }
在onRequestPermissionsResult中通过debug已经看到已经有 Manifest.permission.ACCESS_FINE_LOCATION 和Manifest.permission.ACCESS_COARSE_LOCATION 权限了,但是获取到的wifi列表还是为空!!!!!
不知道这个是不是android M的一个bug?还是android M如果权限关闭后,就再也打不开?
可以将targetSdkVersion 设置为23以下,这样就不会使用运行时权限的方式 ,而是按照原先的权限方式管理
设置23以下 参考这个文章 http://www.cnblogs.com/51pansou/p/5165851.html
并没有文章
建议:
首先确定问题所在,先将targetSdkVersion 版本设置为 23一下,然后获取wifi列表,看能否获取到wifi列表,如果能获取,说明是6.0权限的问题。如果获取不到,说明是获取wifi列表的那段代码有问题。
参考:http://timmy6.github.io/2016/03/15/requestPermission/
一样的问题,已经解决了,参考的这个帖子,答案在帖子最后:http://blog.csdn.net/ccpat/article/details/51151863
请问你确定你看清题目了码? 题主说的是已经授予了位置权限 还是获取不到WiFi列表。
请问您解决了吗,我用的魅族X,安卓6.0.1的系统,相同的问题,有权限还是获取不到