0
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    button = (Button) findViewById(R.id.button); 
    final Intent intent = new Intent(MainActivity.this, AlertActivity.class); 
    final PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this); 
      builder.setContentText("Click here"); 
      builder.setSmallIcon(R.mipmap.ic_launcher); 
      builder.setContentTitle(getString(R.string.app_name)); 
      builder.addAction(R.mipmap.ic_launcher, "Test", pendingIntent); 
      builder.setAutoCancel(true); 
      NotificationManagerCompat.from(MainActivity.this).notify(0, builder.build()); 
     } 
    }); 
} 

また、builder.addAction()を削除して実験しましたが、通知をクリックしても何も動作しません。アクションを追加せずに通知をクリックしたときに、ユーザーを特定のアクティビティに誘導するにはどうすればよいですか?また、いずれの場合も、手動でスライドして削除しない限り、通知を却下することはできません。 setContentIntentを使用してbuilder.setAutoCancel(true)が機能しない

答えて

5

autoCancelはdefaul場合は動作しますT通知をクリックして、あなたのケースIDにごNotificationManagerインスタンスに通知あなたの自己

コールクリア(int型のID)をクリアするためにあなたが持っているボタンを使用している場合に呼び出さ0

+0

'notification.clear(id)'の使用方法と場所を表示します。 – Apurva

+0

onCreate();で直接通知ビルダを作成しても、それでもautoCancelは動作しません。 clear()を呼び出す方法は? –

+0

通知マネージャーで通知を呼び出すと、後でアクセスするために使用できる一意のID(これは通知マネージャーからのものです): 通知(int id、通知通知) キャンセルするには、 id(id) idが同じであることを確認してください。 –

3

はあなたの問題を解決する必要があります。

.setContentIntent(PendingIntent.getActivity(this, 0, new Intent(), 0)); 

フルコード:

button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this); 
      builder.setContentText("Click here"); 
      builder.setSmallIcon(R.mipmap.ic_launcher); 
      builder.setContentTitle(getString(R.string.app_name)); 
      builder.setAutoCancel(true) 
      builder.addAction(R.mipmap.ic_launcher, "Test", pendingIntent); 
      builder.setContentIntent(PendingIntent.getActivity(this, 0, new Intent(), 0)); 
NotificationManager notificationManager= (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); 
notificationManager.notify(0, builder.build()); 
     } 
    }); 

更新:

builder.getNotification().flags |= Notification.FLAG_AUTO_CANCEL; 
+0

setContentIntent()に動作し、感謝です。しかし、私たちがアクションを追加したときとまったく同じ方法で通知を却下し、そのアクションをクリックする方法はありますか? –

+0

@AseedUsmani私の更新の回答を参照してください。 – Ironman

+0

これは機能しません。 builder.getNotification()。flags | = Notification.FLAG_AUTO_CANCEL; –

関連する問題