2

少し問題があります。BroadcastReceiverにインテントを送信するAlarmManagerがあり、onReceiveそのクラスのメソッドで通知をStatusBarにプッシュします...これは魅力のように機能しますが、ユーザーが通知をタップしたときにアクティビティを開く必要がありますが、私のコードにはいくつかの問題があり、グーグルで検索した後、答えが見つかりませんでした...だから、これは通知をプッシュする私のコードです:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClass(this.context, NewCommit.class);     
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

PendingIntent sender = PendingIntent.getBroadcast(this.context, 192839, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT);

NotificationCompat.Builder noti = new NotificationCompat.Builder(this.context)
    .setSmallIcon(R.drawable.status_bar_icon)
    .setContentTitle("My notification")
    .setContentText("Hello World!")
    .setContentIntent(sender);



noti.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE);


NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(181818, noti.build());

何か案が??それは私を夢中にさせています!

ありがとう!

4

1 に答える 1

4

動作しているコードでコードを再確認しました。NewCommitがあなたの活動だと思います。

インテントでアクティビティを明示的に設定することは別として(Intent intent = new Intent(c、NewCommit.class);のようなもの)

主な違い(そして問題)はあなたが呼んでいることだと思います

PendingIntent.getBroadcast

それ以外の

PendingIntent.getActivity

ドキュメントによると:

"Context.startActivity(Intent)の呼び出しなど、新しいアクティビティを開始するPendingIntentを取得します。アクティビティは既存のアクティビティのコンテキスト外で開始されるため、インテントでIntent.FLAG_ACTIVITY_NEW_TASK起動フラグを使用する必要があることに注意してください。 「」

于 2013-02-21T02:38:57.493 に答える