2017-03-28 16 views
0

アプリがバックグラウンドで実行されているときに通知バーに通知が表示される方法を実装しました。 通知をクリックするとアプリケーションを終了します:アンドロイド通知をクリックした後にアプリケーションを終了する

Intent intent = new Intent(this, Main.class); 
PendingIntent pIntent = PendingIntent.getActivity(this, 
          (int) System.currentTimeMillis(), intent, 0); 
if (Build.VERSION.SDK_INT < 16) { 
    Notification n = new Notification.Builder(this) 
      .setContentTitle("Flashlight") 
      .setContentText("turn off") 
      .setSmallIcon(R.mipmap.light_on) 
      .setContentIntent(pIntent) 
      .setAutoCancel(true).getNotification(); 
    NotificationManager notificationManager = 
      (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
    notificationManager.notify(0, n); 
} else { 
    Notification n = new Notification.Builder(this) 
      .setContentTitle("Flashlight") 
      .setContentText("turn off") 
      .setSmallIcon(R.mipmap.light_on) 
      .setContentIntent(pIntent) 
      .setAutoCancel(true).build(); 
    NotificationManager notificationManager = 
      (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
    notificationManager.notify(0, n); 
} 

どうすればいいですか?

+0

"close app"とはどういう意味ですか? –

+0

@MikeM。私はトーチをオフにしてから – DastakWall

答えて

1

アプリを終了する必要がある場合は、あなたの意図のためのアクションを設定し、その後、ブロードキャストレシーバを作成し、内部のアプリケーションを終了することができますonReceiveメソッド、次にIntentFilterでアクションを受信し、受信者をアクションフィルタに登録します。次に例を示します。

あなたのonCreateでその後
Intent intent = new Intent("close_app"); 
PendingIntent pIntent = PendingIntent.getBroadcast(this, (int) 
       System.currentTimeMillis(), intent, PendingIntent.FLAG_UPDATE_CURRENT); 
. 
. 
.// build your notification 

private BroadcastReceiver mReceiver; 

    mReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.d("TAG" ,"onReceive "); 
     finish(); 
     } 
    }; 

その後、あなたの行動を受け取り、あなたのonCreateやonResumeに登録:

 IntentFilter filter = new IntentFilter(); 
     filter.addAction("close_app"); 
     registerReceiver(mReceiver, filter); 

そして、登録解除することを忘れないでくださいあなたのレシーバー

0

アプリケーションやアクティビティを終了することを意味しますか?

通常、長期間使用しないと、アクティビティがリサイクルされます。

あなたがアプリケーションを強制終了する場合は、これを使用することができます:

Process.killProcess(Process.myPid()) 
+0

を終了し、私のプロセスIDを取得する必要がありますクリックした後、バックグラウンドで実行されている私の唯一のアクティビティですスタックで他の活動はありません? – Jorgesys

関連する問題