0

クリックしてアクティビティを開始し、スワイプできない通知を作成しようとしました。

NotificationCompat.Builder mBuilder =
                new NotificationCompat.Builder(this)
                .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher))
                .setSmallIcon(R.drawable.ic_launcher)
                .setContentTitle("DroidSchool")
                .setContentText("DroidSchool l\u00E4uft im Hintergrund...");

        Intent intent = new Intent(this, MainActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, Intent.FLAG_FROM_BACKGROUND);

        NotificationManager mNotificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        
        int mId = 1234567890;
        mNotificationManager.notify(mId, mBuilder.build());

上記のコードでは通知が表示されますが、クリックしても何も起こらず、スワイプして消すことができます。

4

5 に答える 5

3

通知を保持するには、ユーザーがクリックして離すことができないようにするには、このフラグを追加します

Notification mNotification = mBuilder.build();
notification.flags = Notification.FLAG_NO_CLEAR;
mNotificationManager.notify(mId, notification);

アクティビティを開始するには、インテントにこのフラグを使用する必要があります

Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
于 2013-08-30T15:17:27.990 に答える
1

次のようにします。

 NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this)
            .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher))
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle("DroidSchool")
            .setContentText("DroidSchool l\u00E4uft im Hintergrund...");

    Intent intent = new Intent(YourActivity.this, MainActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);


   Notification noti = mBuilder.build();

   noti.flags |= mBuilder.build().FLAG_NO_CLEAR | mBuilder.build().FLAG_ONGOING_EVENT;

   NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);  
    manager.notify(0, noti);  
于 2013-08-30T15:15:25.057 に答える
0

ここで詳しく説明されているフォアグラウンド サービスが必要な場合

Android 4.3 のみが永続的な通知を追加し、ユーザーの設定によって上書きできることに注意してください。

于 2013-08-30T15:15:01.123 に答える
0

このように使ってみてください

Intent intent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, Intent.FLAG_UPDATE_CURRENT);

MainActivity.java 内

通知を消費しないでください。つまり、oncreate() で 2 行以下のコードを呼び出す代わりに、onDestro() の下で呼び出します。

 NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    nm.cancel(mId);
于 2013-08-30T15:16:58.773 に答える