如何解决获取当前的Wifi SSID Android 10
我尝试在Android 10上获取我的货币Wifi SSID。 Android 9或更低版本的代码不再起作用。 Android 10是否有示例?
关于Hacki
解决方法
从API 26(Android 8 Oreo)开始,您需要获得用户位置权限才能获取wifi名称(SSID),这就是为什么在Android 9(API 28),Android 10(API 29)或Android中也是如此11(API 30)及更高版本,您可能会获得<unknown name>
作为返回的SSID或02:00:00:00:00:00
。
为此,在AndroidManifest.xml中:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
我将提供一些用Kotlin编写的演示代码。
为了声明您的许可请求成功代码,我们将其存储在我们正在测试的类(在这种情况下为MainActivity)内部的一个伴随对象中(科特林用于存储常量),或者您可以为常量显式定义一个类。实际上是一种惯例。
class MainActivity : AppCompatActivity() {
...
companion object {
const val PERMISSION_CODE_ACCEPTED = 1
const val PERMISSION_CODE_NOT_AVAILABLE = 0
}
...
}
在您的测试活动中:
when(requestLocationPermission()){
MainActivity.PERMISSION_CODE_ACCEPTED -> getWifiSSID()
}
用于检查请求权限:
fun requestLocationPermission(): Int {
if (ContextCompat.checkSelfPermission(this,android.Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,android.Manifest.permission.ACCESS_FINE_LOCATION)) {
} else {
// request permission
ActivityCompat.requestPermissions(this,arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION),MainActivity.PERMISSION_CODE_ACCEPTED)
}
} else {
// already granted
return MainActivity.PERMISSION_CODE_ACCEPTED
}
// not available
return MainActivity.PERMISSION_CODE_NOT_AVAILABLE
}
要实际获取SSID(WiFi名称):
fun getWifiSSID() {
val mWifiManager: WifiManager = (this.getApplicationContext().getSystemService(Context.WIFI_SERVICE) as WifiManager)!!
val info: WifiInfo = mWifiManager.getConnectionInfo()
if (info.getSupplicantState() === SupplicantState.COMPLETED) {
val ssid: String = info.getSSID()
Log.d("wifi name",ssid)
} else {
Log.d("wifi name","could not obtain the wifi name")
}
}
在API 29(Android 10)的仿真器上进行了测试。
2020-10-04 15:35:28.625 13013-13013/com.example.myapplication D/wifi name: "AndroidWifi"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。