美文网首页
华为手机获取不到wifi信息

华为手机获取不到wifi信息

作者: dongzi711 | 来源:发表于2020-03-16 09:19 被阅读0次

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

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

     RxPermissions rxPermission = new RxPermissions((Activity) context);   rxPermission.requestEach(Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION)//多个权限用","隔开
                    .subscribe(new Consumer<Permission>() {
                        @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<Permission>() {
                        @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信息

          本文链接:https://www.haomeiwen.com/subject/mvswehtx.html