【发布时间】:2014-02-21 05:00:14
【问题描述】:
我正在开发一个电源控制小部件,其中我有一个 ImageButton,当按下它时会切换 Wifi 并更改按钮的 src 以进行视觉确认。问题是我不知道如何检测 Wifi 何时从其他来源(如设置或其他电源控制小部件)禁用或启用,并相应地更改按钮的 src。
例如,如果我在主屏幕上有我的小部件和 Android 默认电源控制小部件,并且我使用我的小部件禁用了 Wifi,那么 Android 默认电源控制小部件的 Wifi 按钮也会被禁用,但如果我使用电源控制小部件禁用了 wifi,我的 wifi 按钮的 src 没有改变,仍然表明 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>
【问题讨论】:
标签: android android-wifi