在后台服务中获取WiFi SSID是否可行?

3

我正在尝试在后台获取WiFi的SSID名称。
在应用前台时,这个功能运行正常。
但是当它转到后台时,在我的前台服务中,它返回空值。
当然,已经获得了位置权限。
请问是否可能在该服务中获取SSID名称?

    ConnectivityManager connManager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    if (ConnectivityManager.TYPE_WIFI == netInfo.getType ()) {
        WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
        WifiInfo wifiInfo = wifiManager.getConnectionInfo();
        Log.d("checkWifi", "checkWifi" + wifiInfo.getSSID());
    }

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

2
如果您正在Android 10+上进行测试,则可能需要ACCESS_BACKGROUND_LOCATION权限。 - CommonsWare
谢谢!@CommonsWare - Zhming
1个回答

7

在Android 10及以上版本中,需要ACCESS_BACKGROUND_LOCATION权限。

<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

谢谢 @CommonsWare!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接