华为手机获取不到wifi信息

问题描述:使用小米手机动态获取权限后都能请求到wifi信息,但是华为手机获取不到。

使用RxPermissions去动态获取权限,小米手机可以拿到wifi信息,就是华为手机不行,代码如下:

 RxPermissions rxPermission = new RxPermissions((Activity) context);   rxPermission.requestEach(Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION)//多个权限用","隔开
                .subscribe(new Consumer() {
                    @Override
                    public void accept(Permission permission) throws Exception {
                        if (permission.granted) {
                            //当所有权限都允许之后,返回true
                            //华为手机允许权限直接走这里了,但是获取不到wifi信息
                        } else if (permission.shouldShowRequestPermissionRationale) {
                            // 用户拒绝了该权限,没有选中『不再询问』(Never ask again),那么下次再次启动时。还会提示请求权限的对话框
//                                Log.d(TAG, permission.name + " is denied. More info should be provided.");
                        } else {
                            // 用户拒绝了该权限,而且选中『不再询问』
                        }
                    }
                });

去华为手机设置的权限里想打开定位权限,也进不了定位权限设置。没办法,就是使用

 Intent intent =new  Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
 startActivity(intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));

去查看一下,果然定位权限没有开启。郁闷呀,为什么动态请求权限允许后没有打开这个定位权限呢!
然后我就做如下处理了:

 RxPermissions rxPermission = new RxPermissions((Activity) context);   rxPermission.requestEach(Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION)//多个权限用","隔开
                .subscribe(new Consumer() {
                    @Override
                    public void accept(Permission permission) throws Exception {
                        if (permission.granted) {
                            //当所有权限都允许之后,返回true
                       LocationManager locationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
                            boolean  isOpen = locationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER);
                            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M&&!isOpen) { 
                            //华为手机如果没有开定位权限是获取不到wifi信息的。RxPermissions对华为手机定位权限请求没啥反应,那就跳转到设置手动打开
                                    Intent intent =new  Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                                    context.startActivity(intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
                            }
                        } else if (permission.shouldShowRequestPermissionRationale) {
                            // 用户拒绝了该权限,没有选中『不再询问』(Never ask again),那么下次再次启动时。还会提示请求权限的对话框
//                                Log.d(TAG, permission.name + " is denied. More info should be provided.");
                        } else {
                            // 用户拒绝了该权限,而且选中『不再询问』
                        }
                    }
                });

这个坑爬了很久,特意分享出来,希望能帮助到你!

你可能感兴趣的:(华为手机获取不到wifi信息)