我正在尝试获取Wifi的MAC地址、BSSID和LINK_speed。我注意到,即使在Wifi关闭的情况下,这三个选项也都显示了值。我关掉手机,然后再打开,但没有打开wifi。这个应用程序在询问这三个项目时会崩溃,我无法尝试/捕捉错误。如果我打开wifi,然后关闭,我可以询问项目和应用程序运行正常。就像BSSID和LINKSPEED一样,BSSID和LINKSPEED是真正的“最后”BSSID和“最后”LINKSPEED。是不是开机后对MAC地址视而不见,而不是在正常行为下打开wifi ?有没有办法捕获错误以防止应用程序被强行关闭?
WifiManager wifi;
wifi = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifi.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
ipAddress = wifiInfo.getIpAddress();
//above work no matter whether wifi on or off before
String BSSID=wifiInfo.getBSSID(); //<<<<< ERRORS FORCE CLOSE IF NOT EVER CONNECTED
int WifiLinkSpeed=wifiInfo.getLinkSpeed(); printi("link speed",WifiLinkSpeed);
String MacAddress=wifiInfo.getMacAddress(); Log.e("MAC address",MacAddress);
//All three of these FORCE close if WIFI has never been turn on发布于 2012-06-30 15:59:45
尝尝这个,
WifiManager wifiManager = (WifiManager) Settings.cntxt.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
strMacAddr = wifiInfo.getMacAddress();
if(strMacAddr==null) {
strMacAddr = "Unknown MAC";
}发布于 2012-06-30 15:44:02
尽管你确实说过你尝试过尝试/捕捉...您捕获了哪些错误/异常?显然不是正确的。
我已经有一段时间没有做过Android编程了,但这就是问题的症结所在……当您尝试这些函数时,找出触发了哪个异常。
try {
// don't declare variables inside block, you'll limit scope
BSSID=wifiInfo.getBSSID(); //<<<<< ERRORS FORCE CLOSE IF NOT EVER CONNECTED
WifiLinkSpeed=wifiInfo.getLinkSpeed(); printi("link speed",WifiLinkSpeed);
MacAddress=wifiInfo.getMacAddress(); Log.e("MAC address",MacAddress);
//All three of these FORCE close if WIFI has never been turn on
}
catch { /* something bad happened, handle it */ }
// continue on since all is good in the world today...https://stackoverflow.com/questions/11272361
复制相似问题