gpt4 book ai didi

android - Android 9.0(PIE)如何获取WIFI SSID?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:18:18 26 4
gpt4 key购买 nike

Android 9.0(PIE)如何获取WIFI SSID?我的代码在 android 版本 8.1.0 之前工作正常,但它不适用于 Android 9.0

ConnectivityManager connManager = (ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (networkInfo.isConnected()) {
WifiManager wifiManager = (WifiManager) activity.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
wifiInfo.getSSID();
String name = networkInfo.getExtraInfo();
String ssid = "\"" + wifiInfo.getSSID() + "\"";
}

但是这段代码不适用于Android 9.0

最佳答案

Android 版本 9 (Pie) 更改需要启用位置(由用户),否则即使您的应用具有正确的权限,对 getConnectioInfo() 的调用也会失败。这记录在 Android 9 changes 中(以下摘录):


限制访问 Wi-Fi 位置和连接信息

在Android 9中,应用进行Wi-Fi扫描的权限要求比之前的版本更加严格。有关详细信息,请参阅 Wi-Fi 扫描限制。

类似的限制也适用于 getConnectionInfo() 方法,该方法返回描述当前 Wi-Fi 连接的 WifiInfo 对象。如果调用应用程序具有以下权限,您只能使用此对象的方法来检索 SSID 和 BSSID 值:

  • ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION
  • ACCESS_WIFI_STATE

检索 SSID 或 BSSID 还需要在设备上启用位置服务(在“设置”>“位置”下)。


在我的例子中,我在尝试读取 WIFI SSID 之前调用下面的函数(仅当在 Android 9+ 上运行时)来检测是否启用了位置。

public static boolean isLocnEnabled(Context context) {
List locnProviders = null;
try {
LocationManager lm =(LocationManager) context.getApplicationContext().getSystemService(Activity.LOCATION_SERVICE);
locnProviders = lm.getProviders(true);

return (locnProviders.size() != 0);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (BuildConfig.DEBUG) {
if ((locnProviders == null) || (locnProviders.isEmpty()))
Log.d(TAG, "Location services disabled");
else
Log.d(TAG, "locnProviders: " + locnProviders.toString());
}
}
return(false);
}

如果位置没有启用,我会弹出一个对话框,说它是必需的,并允许用户跳转到位置设置页面(见下面的代码):

context.startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));

关于android - Android 9.0(PIE)如何获取WIFI SSID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53005755/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com