Lo que hay que hacer es registrar una intención personalizado, por ejemplo ACTION_TEXT_CHANGED en su AppWidgetProvider así por ejemplo:
public static final String ACTION_TEXT_CHANGED = "yourpackage.TEXT_CHANGED";
Después de esto, debe registrar en su AndroidManifest.xml que desea recibir esta intentos en la sección de filtro intención de su etiqueta receptor de la siguiente manera:
<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>
entonces usted tiene que extender el método OnReceive en su AppWidgetProvider y asegúrese de que usted está manejando su intención como esto:
@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");
}
}
Después de todo lo anterior se configura, sólo tiene que transmitir la intención de su actividad después de que el texto ha cambiado la siguiente manera:
Intent intent = new Intent(YourAppWidgetProvider.ACTION_TEXT_CHANGED);
intent.putExtra("NewString", textView.getText().toString());
getApplicationContext().sendBroadcast(intent);
Donde "newString" debería cambiarse por el nombre que para dar la cadena.
Espero que ayude.
PUEDO hacer el paso "envía un PendingIntent". Lo que respondiste es este paso. –
Oops ok ... Entonces, debe transmitir otra intención de su actividad para la cual su widget pueda escuchar. Tener los datos en la intención que puede usar el widget para actualizarse. –