Android App ウィジェット ボタンを押して処理をする
App ウィジェットを作成してみたので、ウィジェットのボタンを押したら、メッセージを表示させてみたメモ。
- package info.typea.eitangoroid;
- import info.typea.eitangoroid.pro.R;
- import android.app.PendingIntent;
- import android.app.Service;
- import android.appwidget.AppWidgetManager;
- import android.appwidget.AppWidgetProvider;
- import android.content.ComponentName;
- import android.content.Context;
- import android.content.Intent;
- import android.os.IBinder;
- import android.util.Log;
- import android.widget.RemoteViews;
- public class FlippadWidgetProvider extends AppWidgetProvider {
- @Override
- public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) {
- for (int i=0; i<appWidgetIds.length; i++) {
- Intent intent = new Intent(context, WidgetService.class);
- PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);
- RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.flippad_widget);
- rv.setOnClickPendingIntent(R.id.btn_showmessage, pendingIntent);
- appWidgetManager.updateAppWidget(appWidgetIds[i], rv);
- }
- }
- public static class WidgetService extends Service {
- @Override
- public void onStart(Intent intent, int startId) {
- RemoteViews rv = new RemoteViews(getPackageName(), R.layout.flippad_widget);
- rv.setTextViewText(R.id.txt_message, "message!!");
- ComponentName thisWidget = new ComponentName(this, FlippadWidgetProvider.class);
- AppWidgetManager manager = AppWidgetManager.getInstance(this);
- manager.updateAppWidget(thisWidget, rv);
- }
- @Override
- public IBinder onBind(Intent intent) {
- return null;
- }
- }
- }