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;
        }
    }
}

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です