我正在为 Android 编写一个应用程序,它会生成一个定期检查 wifi 状态并根据某些条件更改它的服务。我的问题是,每当我尝试创建一个 WifiManager 对象来检查 wifi 的状态(并可能控制它)时,它都会给我一个未初始化的对象。这是代码:
public class WifiCheckerService extends Service {
// Service code and run() method
private void checkWifi() {
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
System.out.println(wifi.getConnectionInfo());
// Rest of code
}
}
这是到达此代码时日志中的行。
02-18 05:22:59.274: INFO/System.out(1170): SSID: <none>, BSSID: <none>, MAC: <none>, Supplicant state: UNINITIALIZED, RSSI: -200, Link speed: -1, Net ID: -1
显然我没有得到系统 WifiManager 对象。我知道这与我在一个线程服务中的事实有关,但我仍然无法理解这个概念,并解释一下它为什么不起作用以及如何修复它,我将不胜感激。
(在某种不相关的注释中,我认为解释也可以解释为什么我不能Toast.makeText(getBaseContext(), "Checking Wifi...", Toast.LENGTH_SHORT).show();
在服务中使用该行)