美文网首页Android开发Android技术知识Android开发
Android8.0 9.0 10.0获取wifi名字问题

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

作者: 敲robot的代码 | 来源:发表于2019-11-28 11:40 被阅读0次

    一、添加权限

        <!--使用网络-->
        <uses-permission android:name="android.permission.INTERNET" />
        <!--网络状态-->
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <!--wifi状态权限-->
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <!--位置信息-->
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <!--如果是安卓10.0,需要后台获取连接的wifi名称则添加进程获取位置信息权限 -->
        <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
        <!--android 10.0使用wifi api新添加的权限-->
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    

    二、申请权限

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

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


    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))
        }
    

    觉得能帮你解决问题了就点个赞吧

    相关文章

      网友评论

        本文标题:Android8.0 9.0 10.0获取wifi名字问题

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