Android 当wifi状态更改时,如何调用小部件更新?

Android 当wifi状态更改时,如何调用小部件更新?,android,android-widget,Android,Android Widget,我有一个wifi小部件,可以切换wifi状态。但是,如果用户在不使用我的widget的情况下更改wifi状态,那么我的widget将不会反映该更改。例如,wifi已打开,用户通过设置关闭wifi,小部件仍将显示wifi已打开,因为它尚未更新 wifi状态更改后,如何让widget更新?使用BroadcastReceiver通知此类更改 使用 IntentFilter mFilter = new IntentFilter(); mFilter .addAction(WifiManager.SUPP

我有一个wifi小部件,可以切换wifi状态。但是,如果用户在不使用我的widget的情况下更改wifi状态,那么我的widget将不会反映该更改。例如,wifi已打开,用户通过设置关闭wifi,小部件仍将显示wifi已打开,因为它尚未更新


wifi状态更改后,如何让widget更新?

使用
BroadcastReceiver
通知此类更改

使用

IntentFilter mFilter = new IntentFilter();
mFilter .addAction(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION);
registerReceiver(yourReceiver, mFilter );
yourReceiver的onReceive中使用

if (action.equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION)) {
//Do something
}

要更新小部件

您需要在接收器中注册android.net.conn.CONNECTIVITY\u更改和android.net.wifi.wifi\u STATE\u更改操作

然后在onReceive方法中,使用以下代码更新小部件:

Intent i = new Intent(context, WidgetProvider.class);
i.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
i.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,
AppWidgetManager.getInstance(context).getAppWidgetIds(new ComponentName(context, WidgetProvider.class)));
context.sendBroadcast(i);
问候,

莱昂纳多·奥利维拉