您需要做的是在 AppWidgetProvider 中注册一个自定义意图,例如 ACTION_TEXT_CHANGED,如下所示:
public static final String ACTION_TEXT_CHANGED = "yourpackage.TEXT_CHANGED";
之后,您需要在 AndroidManifest.xml 中注册您希望在接收者标记的意图过滤器部分中接收此意图,如下所示:
<receiver android:name=".DrinkWaterAppWidgetProvider">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="yourpackage.TEXT_CHANGED" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/appwidget_info" />
</receiver>
然后,您必须扩展 AppWidgetProvider 中的 onReceive 方法,并确保您像这样处理您的意图:
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
if (intent.getAction().equals(ACTION_TEXT_CHANGED)) {
// handle intent here
String s = intent.getStringExtra("NewString");
}
}
设置完上述所有内容后,您只需在文本更改后在活动中广播意图,如下所示:
Intent intent = new Intent(YourAppWidgetProvider.ACTION_TEXT_CHANGED);
intent.putExtra("NewString", textView.getText().toString());
getApplicationContext().sendBroadcast(intent);
其中“NewString”应更改为您为字符串指定的名称。
我希望它有帮助。