1

こんにちは、ブロードキャスト メッセージを受信したときに BroadcastReceiver で通知を送信しようとしています。Parse.com から。ただし、NotificationCompat.Builder のインスタンスから getNotification メソッドを呼び出すと、通知が自動的に送信され、既定の contextText とともに表示されます。したがって、mNotificationManager.notify を呼び出すと、2 つの通知が表示され、1 つは指定されたコンテンツ テキストが表示され、もう 1 つは表示されません。私はAPIレベル16です。

以下はBroadcastReceiverの私のコードです。助けてください。どうもありがとうございました!

 @Override
public void onReceive(Context context, Intent intent) {
    try {
        String action = intent.getAction();
        if (intent.getExtras() != null) {

            JSONObject json = new JSONObject(intent.getExtras().getString(
                    "com.parse.Data"));

            String text = json.getString("text");
            String title = json.getString("title");
            Long timestamp = json.getLong("timestamp");
            String qid = json.getString("qid");

            NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
                    context).setSmallIcon(R.drawable.ic_launcher)
                    .setContentTitle(title)
                    .setContentText(text)
                    .setTicker("New Reply");

            Intent resultIntent = new Intent(context,
                    QuestionViewActivity.class);
            resultIntent.putExtra(QuestionViewActivity.EXTRA_QUESTION_ID,
                    qid);

            TaskStackBuilder stackBuilder = TaskStackBuilder.from(context);
            stackBuilder.addParentStack(MainActivity.class);
            stackBuilder.addNextIntent(resultIntent);
            PendingIntent resultPendingIntent = stackBuilder
                    .getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
            mBuilder.setContentIntent(resultPendingIntent);

            NotificationManager mNotificationManager = (NotificationManager) context
                    .getSystemService(Context.NOTIFICATION_SERVICE);

            Notification n = mBuilder.getNotification();
            mNotificationManager.notify(qid.hashCode(),
                    mBuilder.getNotification());
        }
4

2 に答える 2

2

私はついにそれを手に入れました:

  1. build() メソッドがない場合: ActionBarSherlock が古いバージョンの android-support-v4.jar を使用していることが原因です。その jar を /SDK/extras/android/support/v4/android-support-v4.jar から更新されたものに置き換えるだけです

  2. 通知が重複している場合: Parse(parse.com) サービスが原因です。JSON データに "title" が含まれる解析通知 lib で送信されたプッシュを受信すると、サービスは "通知を受け取りました" のように定型化された contentText を含む通知を自動的に表示します。ここで自動通知を無効にするために使用したトリックは、解析プッシュの JSON データで「タイトル」と「テキスト」を使用しないでください。代わりに他の名前を使用してから、カスタマイズされたブロードキャスト レシーバーで解析します。今はうまくいきます。

ありがとう!

于 2013-01-27T22:17:26.007 に答える
0

http://developer.android.com/reference/android/app/Notification.Builder.html#build()

getNotification() は非推奨です。build() を使用しないのはなぜですか?

于 2013-01-27T11:10:05.867 に答える