1

ボタンを含むカスタム通知を作成し、ユーザーがボタンを押したときに一覧表示したいと思います。

ボタンはアクティビティを開くべきではなく、曲の変更などのロジックスタッフのみを開く必要があります。

コード:

        RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.notification);
        contentView.setTextViewText(R.id.toptext, nowPlayingTitle);

        //this not work
        Intent intent = new Intent(this, receiver.class);
        intent.putExtra("UNIQ", "1");
        PendingIntent pendingIntent = PendingIntent.getBroadcast(
                this.getApplicationContext(), 234324243, intent, PendingIntent.FLAG_CANCEL_CURRENT)
        contentView.setOnClickPendingIntent(R.id.imageButtonPlay,
                pendingIntent);
        notification.contentView = contentView; 

        // this is to return to my activity if click somwhere else in notification
        Intent notificationIntent = new Intent(this, MYACTIVITY.class);
        PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
        notification.contentIntent = contentIntent;

        mNotificationManager.notify(NOTIFICATION_ID, notification);

setOnClickPendingIntentのコツがわからないのですが、2番目のパラメーターに何を含める必要がありますか?ユーザーがボタンを押した後、関数を呼び出すにはどうすればよいですか?

私はおそらく何かが欠けているので、受信機側とユーザーが押した後に何が起こったのか理解できません

4

2 に答える 2

3

作成したボタンが実際にはアプリケーションに属していないという事実を見逃しています。別のコンテキスト、別のプロセスで作成されます。関数を呼び出す方法はありません。

代わりに、ユーザーがボタンをタップすると、その保留中のインテントが実行されます。あなたは(あなたの活動の中で)あなたの受信者によってそれを捕まえ、いくつかのパラメータをチェックして行動を起こすことができます。または、サービスを実装して、このインテントをバックグラウンドで処理することもできます。私はこの方法を好みます。

于 2013-02-05T16:09:54.077 に答える
0

迅速な回答をありがとう。レシーバーを使ってみましたが、発火しませんでした。コードはメインの質問にあり、受信者クラス用に次のコードを作成しました。

public class receiver extends BroadcastReceiver 
{   
    @Override
    public void onReceive(Context context, Intent intent) 
    {
   Bundle bundle = intent.getExtras(); 
    }      
}

ただし、通知をクリックしても受信機は起動しません(デバッグモードでテスト)

于 2013-02-05T16:15:11.577 に答える