我有一个小工具,我正在尝试使用它来启用/禁用wifi,以及显示一些额外的信息。我想在Wifi启用/禁用时显示过渡沙漏图标,所以我正在收听android.net.wifi.WIFI_STATE_CHANGED意图。
当抓住那个意图时,我正在调用小部件的onUpdate函数,并且我有这个代码块来更改显示的图像:
WifiManager wifiMan = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiMan.getConnectionInfo();
RemoteViews views = new RemoteViews("com.nickavv.cleanwidgets", R.layout.wifi_toggle_layout_large);
supState = wifiInfo.getSupplicantState();
wifiState = wifiMan.getWifiState();
if(wifiState == WifiManager.WIFI_STATE_ENABLED) {
//Show enabled image
} else if(wifiState == WifiManager.WIFI_STATE_DISABLED){
//Show disabled image
} else {
//Show hourglass
}
这是我的拦截点击和wifi状态更改的代码:
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
if (intent.getAction().equals(ACTION_WIDGET_RECEIVER)) {
if(wifiState != WifiManager.WIFI_STATE_ENABLING || wifiState != WifiManager.WIFI_STATE_DISABLING) {
switchToggle(context);
}
}
AppWidgetManager myAWM = AppWidgetManager.getInstance(context);
ComponentName cn = new ComponentName(context, WifiWidgetLarge.class);
onUpdate(context, myAWM, myAWM.getAppWidgetIds(cn));
}
这在较小的小部件上工作正常,这只是一个切换开关,但在较大的小部件上,完全相同的代码不会产生正确的结果。它在禁用时显示沙漏,但在启用时不显示。似乎收到的意图太迟而无法显示任何内容,因为调试日志显示它最终被收到。直到状态更改为WIFI_STATE_ENABLED之前,才会使用WIFI_STATE_ENABLING。
最令人费解的是,这个小部件在我的平板电脑和我室友的电话上工作正常,而不是在我的手机上。但是,在我更加确定其性能之前,我不想发布它。有什么想法吗?
答案 0 :(得分:-1)
姜饼版可能会有更多的调整。你现在可以做的是检查android版本,如果它是GB,你需要做一些黑客攻击。
你可以检查WIFI_STATE_CHANGED_ACTION并使用
获取上一个/下一个状态EXTRA_WIFI_STATE EXTRA_PREVIOUS_WIFI_STATE