0

通知トレイに共有オプションがあります。そのため、コードで 2 つのカスタム ビューを使用しました。

1. Expandable Notification Layout
2. Normal Notification Layout

UIは正常に動作しています。しかし、通知は誤動作しています。first notification or share first item通知の をクリックすると、完全に機能します。しかし、 をクリックするlast notificationと、アプリが開きますが、通知トレイから通知が消去されません。また、奇妙なことsmall iconに、ステータスバーに表示される通知をクリックすると消え、通知をクリックしても応答しません。通知を取り消します。そのため、2 回目にクリックしても機能しません。通常のビューにデフォルトのビルダー レイアウトを使用した場合、これは発生しませんでした。これが私のコードです:

//拡張通知レイアウトをセットアップする

 RemoteViews expandedView=new RemoteViews(context.getPackageName(), R.layout.custom_notification); 
  expandedView.setImageViewResource(R.id.image_logo, R.drawable.ic_launcher);
        SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm aa");
        String time = dateFormat.format(new Date(when));
            expandedView.setTextViewText(R.id.current_time, time);
            expandedView.setTextViewText(R.id.title, context.getResources().getString(R.string.app_name));


            expandedView.setTextViewText(R.id.text, message);
expandedView.setTextViewCompoundDrawables(R.id.share, R.drawable.gcm_share, 0, 0, 0);

//通常の通知レイアウトを設定

    RemoteViews collapsedView=new RemoteViews(context.getPackageName(), R.layout.custom_notification_normal_layout);
    collapsedView.setTextViewText(R.id.text, message);
            notificationId = ((int) System.currentTimeMillis() % 1000000);

//共有アイコンのリスナーを登録する

setBtnListeners(expandedView, requestID, message, context, notificationId);


            `Bitmap largeIcon = ((BitmapDrawable) context.getResources().getDrawable(R.drawable.ic_launcher)).getBitmap()`;

//通知ビルダを構築する

 NotificationCompat.Builder mNotifyBuilder = new NotificationCompat.Builder(context);
         mNotifyBuilder
                            .setWhen(when)
                            .setSmallIcon(icon)
                            .setLargeIcon(largeIcon)
                            .setContentTitle(message)
                            .setStyle(new NotificationCompat.BigTextStyle().bigText(message));
            notification = mNotifyBuilder.build();

//通知ビルダーに通知を割り当てる

 notification.bigContentView = expandedView;
            notification.contentView = collapsedView;

//保留中のインテントを作成

Intent notificationIntent;

        //notificationIntent = new Intent(context, Launcher.class);
        notificationIntent = new Intent(context, SplashActivity.class);//Sritapana189
        notificationIntent.putExtra(BundleKeys.NORMAL_PUSH, 1);
        notificationIntent.putExtra(BundleKeys.DEFAULT_NOTI_NAV, nav);
        notificationIntent.putExtra(BundleKeys.FROM_GCM, true);
        notificationIntent.putExtra(ApplicationConstants.GCMKeys.GCM_NOTIFICATION_ID, notificationId);
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
  PendingIntent contentIntent = PendingIntent.getActivity(context, requestID, notificationIntent, 0); //Modified
        notification.contentIntent = contentIntent;
 notification.flags |= Notification.FLAG_AUTO_CANCEL;
        notificationManager.notify(notificationId, notification);

//通知トレイのシェアアイコン登録

   private static void setBtnListeners(RemoteViews notificationView, int requestId, String message, Context context, int notificationId) {
        Intent shareBtnIntent = new Intent(context, GcmTransparentActivity.class);
        shareBtnIntent.putExtra(ApplicationConstants.GCMKeys.BREAKING_NEWS, message);
        shareBtnIntent.putExtra(ApplicationConstants.GCMKeys.GCM_NOTIFICATION_ID, notificationId);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, requestId, shareBtnIntent, 0);
        notificationView.setOnClickPendingIntent(R.id.share, pendingIntent);
    }

//SplashActivity が Pending Inent を受け取る

//ここでは、ペイロード データを取得して保存し、通知をキャンセルしています

Utility.cancelNotification(gcmNotificationId, getApplicationContext());


public static void cancelNotification(int id, Context ctx) {
        String ns = Context.NOTIFICATION_SERVICE;
        NotificationManager nMgr = (NotificationManager) ctx.getSystemService(ns);
        nMgr.cancel(id);
    }

コードで行った唯一の変更は、通常のビューにカスタム レイアウトを追加したことです。この変更の後、最後の通知項目がクリックされたときに誤動作します。私が欠けているものはありますか?この奇妙な問題を解決するのを手伝ってください。

4

2 に答える 2