我正在開發一個電源控制Widget,其中我有一個ImageButton,當按下切換Wifi並更改按鈕的src以進行可視化確認時。問題是我不知道如何檢測Wifi何時被禁用或從其他來源啓用,如從設置或其他電源控制小部件,並相應地更改按鈕的src。例如,如果我在主屏幕上同時使用了我的Widget和Android默認Power Control Widget,並且使用我的Widget禁用了WIFI,那麼Android默認Power Control Widget的WIFI按鈕也會被禁用,不過,如果我使用股票電力控制小部件禁用WiFi,我的wifi按鈕的src不會改變,仍然表示wifi已啓用。如何捕捉WiFi狀態變化事件
任何想法讚賞,因爲我找不到解決方案。
編輯: 這裏是我的廣播接收器:
public void onReceive(Context context, Intent intent) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
int state = wifi.getWifiState();
switch(state) {
case WifiManager.WIFI_STATE_DISABLED:
remoteViews.setImageViewResource(R.id.widget_wifi, R.drawable.ic_widget_wifi_off);
break;
case WifiManager.WIFI_STATE_ENABLED:
remoteViews.setImageViewResource(R.id.widget_wifi, R.drawable.ic_widget_wifi_on);
break;
case WifiManager.WIFI_STATE_DISABLING:
remoteViews.setImageViewResource(R.id.widget_wifi, R.drawable.ic_widget_wifi_off);
break;
case WifiManager.WIFI_STATE_ENABLING:
remoteViews.setImageViewResource(R.id.widget_wifi, R.drawable.ic_widget_wifi_on);
break;
}
}
而且在AndroidManifest.xml中:
<receiver
android:name="WidgetIntentReceiver"
android:label="widgetBroadcastReceiver" >
<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
<action android:name="android.net.wifi.STATE_CHANGE" />
</intent-filter>
和權限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>
如果有幫助,http://stackoverflow.com/questions/9031952/wifi-connection-changed-action-in-android?rq=1 –