本人在完善WIFI功能,原来WIFI没有输错密码提示的功能。需加入
功能基本已经实现,问题:
当我framework下确定密码错误的事件后,我用广播发给我的wifisettings。
wifisettings下面接受消息后,调用dialog类重新的输密码,重连接。连上!OK!
可是当我back回到其它地方再回到wifi-setting 界面下时。又弹出这个设置界面了。。反复都是这样的。
INTENT参考wifisettings下原来的广播方式
public WifiSettings() {
mFilter = new IntentFilter();
mFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
mFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
mFilter.addAction(WifiManager.NETWORK_IDS_CHANGED_ACTION);
mFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
//.........................................................................
mFilter.addAction(WifiManager.ERROR_PASSWORD_ACTION);
//..............................................................................
mFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
mFilter.addAction(WifiManager.RSSI_CHANGED_ACTION); mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
handleEvent(intent);
}
}; mScanner = new Scanner();
}
onResume()下registerReceiver(mReceiver, mFilter);
onPause()下注销。。可是当我back回到其它地方,再回到wifi-setting 界面下时。又弹出这个设置界面了。。反复都是这样的。这里应该是onPause()下的unregisterReceiver(mReceiver);保存了设置,onResume()的时候又更新回来了。
但是我的framework并没发广播。。
else if(WifiManager.ERROR_PASSWORD_ACTION.equals(action)){ 尽然响应了。怎么解释?有什么办法呢
功能基本已经实现,问题:
当我framework下确定密码错误的事件后,我用广播发给我的wifisettings。
wifisettings下面接受消息后,调用dialog类重新的输密码,重连接。连上!OK!
可是当我back回到其它地方再回到wifi-setting 界面下时。又弹出这个设置界面了。。反复都是这样的。
INTENT参考wifisettings下原来的广播方式
public WifiSettings() {
mFilter = new IntentFilter();
mFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
mFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
mFilter.addAction(WifiManager.NETWORK_IDS_CHANGED_ACTION);
mFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
//.........................................................................
mFilter.addAction(WifiManager.ERROR_PASSWORD_ACTION);
//..............................................................................
mFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
mFilter.addAction(WifiManager.RSSI_CHANGED_ACTION); mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
handleEvent(intent);
}
}; mScanner = new Scanner();
}
onResume()下registerReceiver(mReceiver, mFilter);
onPause()下注销。。可是当我back回到其它地方,再回到wifi-setting 界面下时。又弹出这个设置界面了。。反复都是这样的。这里应该是onPause()下的unregisterReceiver(mReceiver);保存了设置,onResume()的时候又更新回来了。
但是我的framework并没发广播。。
else if(WifiManager.ERROR_PASSWORD_ACTION.equals(action)){ 尽然响应了。怎么解释?有什么办法呢
解决方案 »
- android listview item点击,菜鸟求助
- HorizontalScrollView嵌套ListView的显示问题
- Android开发有关Intent的问题
- 【Android GPS】无法获取Location
- 关于ndk opengl
- ExpandableListView+CheckBox单选的问题,请熟悉的大侠指点下,在线等,多谢啦
- android数据存储
- 请问如何将onActivityResult得到的数据更新在alertdialog上
- 关于静默安装和卸载
- 如何把ArrayList放到button的单击事件里面
- 大家好,请问怎么从发送短信中获取本机号码
- 动态库如何调用系统的静态库?
String action = intent.getAction();
if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) {
Log.i(TAG,"WifiManager.WIFI_STATE_CHANGED_ACTION");
updateWifiState(intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
WifiManager.WIFI_STATE_UNKNOWN));
} else if (WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.equals(action)) {
Log.i(TAG,"WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.equals");
updateAccessPoints();
} else if (WifiManager.NETWORK_IDS_CHANGED_ACTION.equals(action)) {
Log.i(TAG,"WifiManager.WifiManager.NETWORK_IDS_CHANGED_ACTION");
if (mSelected != null && mSelected.networkId != -1) {
mSelected = null;
}
updateAccessPoints();
} else if (WifiManager.SUPPLICANT_STATE_CHANGED_ACTION.equals(action)) {
updateConnectionState(WifiInfo.getDetailedStateOf((SupplicantState)
intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE)));
}else if(WifiManager.ERROR_PASSWORD_ACTION.equals(action)){ int keycode =intent.getIntExtra("networkID", -1);
Log.i(TAG,"keycode:"+keycode);
//mSelected.priority =1000;
showDialog(mSelected, false); forget(keycode); }else if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)) {
updateConnectionState(((NetworkInfo) intent.getParcelableExtra(
WifiManager.EXTRA_NETWORK_INFO)).getDetailedState());
我只发了一次广播。。
是不是应在onCreate()下注册呢?
如果我一次都不发广播到这个wifi_setting下面,则不会产生上面的情况所以应该还是onpause()的问题