この問題について他の人が尋ねた多くの質問を検索しましたが、すべてが混乱し、役に立ちませんでした。
私の問題は、アプリのウィジェットを作成し、正常に起動することですが、イベントに反応しません。ウィジェットに2つのボタンがあります。これを実装するクラスのソースは次のとおりです。
public class MediaPlayerWidget extends AppWidgetProvider {
public static final String NEXT_SONG = "1";
public static final String PLAY_PAUSE = "2";
private MediaPlayerActivity act=new MediaPlayerActivity();
private void addEvents(Context ctxt) {
Intent intent = new Intent(ctxt, MediaPlayerWidget.class);
intent.setAction(PLAY_PAUSE);
PendingIntent pi = PendingIntent.getBroadcast(ctxt, 0, intent, 0);
RemoteViews views = new RemoteViews(ctxt.getPackageName(),
R.layout.widget_layout);
views.setOnClickPendingIntent(R.id.widget_play, pi);
intent=new Intent(ctxt,MediaPlayerWidget.class);
intent.setAction(NEXT_SONG);
pi=PendingIntent.getBroadcast(ctxt, 0, intent, 0);
views.setOnClickPendingIntent(R.id.widget_next, pi);
}
@Override
public void onReceive(Context ctxt,Intent i){
String cmp=i.getAction();
if(cmp.equals(NEXT_SONG)){
act.nextSong();
}else if(cmp.equals(PLAY_PAUSE)){
act.playPause();
}
}
@Override
public void onUpdate(Context ctxt, AppWidgetManager mgr, int[] appWidgetIds) {
addEvents(ctxt);
}
}
何が問題と思われるか知っている人はいますか?Service が更新を行う他のソリューションを見てきましたが、ボタンが 2 つあるため、そのようなことは必要ありません。他のコードが必要な場合は、提供します。
編集:
上記のコードの何が問題なのかわからない場合は、ウィジェットにボタンリスナー/イベントを実装する方法について、誰かが私に教えたり、サンプルコードを提供したりできます。