Android8.0 9.0 10.0获取wifi名字问题

一、添加权限

 

    
    
    
    
    
    
    
    
    
    
    
    

二、申请权限

申请权限框架较多,本人使用的 RxPermissions

android8.0以上需要开启位置信息,如图

 

Android8.0 9.0 10.0获取wifi名字问题_第1张图片

android10.0截图

android9.0以上需要申请定位权限

android10.0需要申请新添加的隐私权限ACCESS_FINE_LOCATION详情见android官方10.0重大隐私权变更,如果还需要后台获取或者使用wifi api则还需要申请后台使用定位权限ACCESS_BACKGROUND_LOCATION

三、申请权限代码示例

 

    /**
     * 判断是否获取到了定位权限,获取wifi信息需要
     */
    private fun rxPermissions() {
        //获取必要权限
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            RxPermissionsUtlis(
                this,
                RxPermissions(this),
                getString(R.string.permissions14),
                object : RxPermissionsUtlis.PermissionCallbacks {
                    override fun onPermissionsGranted() {
                        if (!LocationUtils.isGpsEnabled()) {
                            LogUtils.e(TAG, "没有开启GPS定位")
                            openGpsSettings()
                        } else {
                            //获取连接的wifi名称
                            getConnectWifiSsid()
                        }
                    }

                    override fun onPermissionsDenied() {
                        finish()
                    }

                },
                Manifest.permission.ACCESS_BACKGROUND_LOCATION,
                Manifest.permission.ACCESS_FINE_LOCATION,
                Manifest.permission.ACCESS_COARSE_LOCATION
            )

        } else {
            RxPermissionsUtlis(
                this,
                RxPermissions(this),
                getString(R.string.permissions1),
                object : RxPermissionsUtlis.PermissionCallbacks {
                    override fun onPermissionsGranted() {
                        //先判断Android系统,9.0以上除了需要定位权限还需要开启GPS才能获取wifi名字
                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
                            if (!LocationUtils.isGpsEnabled()) {
                                LogUtils.e(TAG, "没有开启GPS定位")
                                openGpsSettings()
                            }
                        }
                    }

                    override fun onPermissionsDenied() {
                        finish()
                    }

                },
                Manifest.permission.ACCESS_COARSE_LOCATION
            )
        }


    }
  /**
     * 获取连接wifi的ssid
     *
     * @return
     */
    private fun getConnectWifiSsid(): String {
        val wifiManager =
            applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
        val wifiInfo = wifiManager.connectionInfo

        LogUtils.e(TAG, "wifiInfo==$wifiInfo")
        LogUtils.e(TAG, "SSID===${wifiInfo.ssid}")

        return wifiInfo.ssid

    }

    /**
     *  打开Gps设置界面
     */
    private fun openGpsSettings() {
        val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
        startActivity(intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK))
    }

 

你可能感兴趣的:(android10.0)