Parece que la documentación del desarrollador me ha fallado aquí. Puedo crear un widget estático sin pensarlo, incluso puedo crear un widget como el widget de reloj analógico que se actualizará a sí mismo, sin embargo, no puedo imaginar cómo crear un widget que reaccione cuando un usuario haga clic en eso. Aquí es el mejor ejemplo de código que la documentación para desarrolladores da a lo que una actividad artilugios deben contener (el único otro indicio siendo las demostraciones del API, que sólo crea un widget estática):widgets que se pueden hacer clic en Android
public class ExampleAppWidgetProvider extends AppWidgetProvider {
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int N = appWidgetIds.length;
// Perform this loop procedure for each App Widget that belongs to this provider
for (int i=0; i<N; i++) {
int appWidgetId = appWidgetIds[i];
// Create an Intent to launch ExampleActivity
Intent intent = new Intent(context, ExampleActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
// Get the layout for the App Widget and attach an on-click listener to the button
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget_provider_layout);
views.setOnClickPendingIntent(R.id.button, pendingIntent);
// Tell the AppWidgetManager to perform an update on the current App Widget
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
}
de: The Android Developer Documentation's Widget Page
Entonces, parece que se llama intención pendiente cuando se hace clic en el widget, que se basa fuera de un intento (no estoy muy seguro de cuál es la diferencia entre un intento y un intento pendiente), y la intención es para la clase ExampleActivity . Así que hice mi clase de actividad muestra una actividad simple que cuando se creó, crearía un objeto MediaPlayer, y empezar a ella (no sería jamás liberar el objeto, por lo que sería finalmente estrellarse, aquí es su código:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MediaPlayer mp = MediaPlayer.create(getApplicationContext(), R.raw.sound);
mp.start();
}
Sin embargo, cuando agregué el widget a la pantalla de inicio y hice clic en él, no jugué nada, de hecho, no jugué nada cuando configuré el temporizador de actualización en solo unos cientos de milisegundos (en el archivo xml del proveedor de appwidget). Además, establecí los puntos de quiebre y descubrí que no solo nunca llegaba a la actividad, sino que ningún punto de quiebre que establecí se disparaba (todavía no he descubierto por qué), sin embargo, logcat parecía indicar que la clase de actividad el archivo se estaba ejecutando.
Entonces, ¿hay algo que pueda hacer para que un appwidget responda a un clic? Como el método onClickPendingIntent() es el más cercano que he encontrado a un tipo de método onClick.
Muchas gracias.
Hai Leif, ¿resuelve este problema con el Methode de Brain515? Tengo un problema similar, pero la solución del cerebro no funciona para mí. ¿Puedes ayudarme? –