AppWidgetManager manager = AppWidgetManager.getInstance(this);まず、「AppWidgetManager」というものを用意します。これは、AppWidgetを管理するためのクラスです。このクラスは、Serviceインスタンス(this)を引数に渡してAppWidgetManager.getInstanceを呼び出し取得します。
RemoteViews view = new RemoteViews(getPackageName(), R.layout.appwidget);続いて、「RemoteViews」というインスタンスを用意します。これは名前の通り、リモートでアクセスされるViewです。これは引数にパッケージ名とリソースのレイアウトIDを渡します。これにより、指定のレイアウトにリモートでアクセスするためのRemoteViewsが用意されます。
if (ACTION_BTNCLICK.equals(intent.getAction())) {
btnClicked(view);
}引数で渡されたIntentのアクションを「getAction」で取得し、それがACTION_BTNCLICKだったなら、AppWidgetに用意したボタンがクリックされたものと判断して、btnClickedメソッドを実行します。これが、ボタンのイベント処理を行う部分になるわけです。Intent newintent = new Intent();続いて、新しいIntentを用意し、「setAction」でアクションを設定します。これは何をするのかというと、「PendingIntent」というものを使ってIntentを発信させるのに使うのです。
newintent.setAction(ACTION_BTNCLICK);
PendingIntent pending = PendingIntent.getService(this, 0, newintent, 0);PendingIntentは、指定した時間や、イベントのときにIntentを発信させるのに用いられるものです。PendingIntent.getServiceでPendingIntentインスタンスを用意し、そしてRemoteViewsの「setOnClickPendingIntent」を使い、指定したViewのリソースIDにPendingIntentを設定してやります。これで、クリックしたらIntentが発信され、結果、先ほど設定したようにACTION_BTNCLICKのアクションであればbtnClickedが実行されるようになります。
view.setOnClickPendingIntent(R.id.button1, pending);
ComponentName widget = new ComponentName(this, MyAppWidget.class);最後に、「ComponentName」というものを用意し、AppWidgetManagerでAppWidgetを更新します。これで必要な処理はすべて完了しました。
manager.updateAppWidget(widget, view);
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
AppWidgetManager manager = AppWidgetManager.getInstance(this);
RemoteViews view = new RemoteViews(getPackageName(), R.layout.appwidget);
if (ACTION_BTNCLICK.equals(intent.getAction())) {
btnClicked(view);
}
Intent newintent = new Intent();
newintent.setAction(ACTION_BTNCLICK);
PendingIntent pending = PendingIntent.getService(this, 0, newintent, 0);
view.setOnClickPendingIntent(R.id.button1, pending);
ComponentName widget = new ComponentName(this, MyAppWidget.class);
manager.updateAppWidget(widget, view);
}
| << 前へ |