52

通知の操作を開始したばかりですが、通知センターで通知がタップされたら、通知を削除してアプリを起動しようとしています。

次のコードで作業しようとしました:

import android.app.NotificationManager;

public class ExpandNotification {
     private int NOTIFICATION = 546;
     private NotificationManager mNM;

     public void onCreate() {
        mNM.cancel(NOTIFICATION);
        setContentView(R.layout.activity_on);
        //Toast.makeText(this, "stopped service", Toast.LENGTH_SHORT).show();
    }

このコードは、タップすると他のクラスを実行すると思いますか?

PendingIntent contentIntent = PendingIntent.getActivity(this, REQUEST_CODE, new Intent(this, ExpandNotification.class), 0);

ただし、通知は消えず、アプリケーションも起動しません。しかし、左または右にスワイプして削除することはできますが、それは私が望むものではありません..

4

6 に答える 6

117

Builder インスタンスを使用Notification.BuilderまたはNotificationCompat.Builder呼び出して同じ効果を得るには。setAutoCancel(true)

于 2014-07-14T09:46:09.567 に答える
88

フラグを使用するNotification.FLAG_AUTO_CANCEL

Notification notification = new Notification(icon, tickerText, when);
notification.setLatestEventInfo(context, contentTitle, contentText, pendingIntent);

// Cancel the notification after its selected
notification.flags |= Notification.FLAG_AUTO_CANCEL;

アプリを起動するには:

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

// Create a new intent which will be fired if you click on the notification
Intent intent = new Intent(context, App.class);

// Attach the intent to a pending intent
PendingIntent pendingIntent = PendingIntent.getActivity(context, intent_id, intent, PendingIntent.FLAG_UPDATE_CURRENT);
于 2012-10-19T11:07:51.210 に答える
10

この回答は遅すぎますが、通知コンストラクターが非推奨になるため、次のようにビルダーを使用して通知を使用するため、特に次のソリューションを作成します。

 **.setAutoCancel(true)** is used to remove notification on click

通知全体は次のようになります。

  private void makeNotification(String title,String msg){

    Intent resultIntent = new Intent(this, MasterActivity.class);

    PendingIntent resultPendingIntent =
            PendingIntent.getActivity(
                    this,
                    0,
                    resultIntent,
                    PendingIntent.FLAG_UPDATE_CURRENT
            );

    NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this)
                    .setContentIntent(resultPendingIntent)
                    .setSmallIcon(R.drawable.ic_launcher)
                    .setContentTitle(title)
                    .setAutoCancel(true)
                    .setContentText(msg);

    int mNotificationId = 001;
    NotificationManager mNotifyMgr =
            (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    mNotifyMgr.notify(mNotificationId, mBuilder.build());

}

タイトルとメッセージを指定してこのメ​​ソッドを呼び出すと、完全な通知が得られます。

于 2015-11-27T11:00:50.060 に答える