Откройте приложение после нажатия кнопки «Уведомление»

У меня есть уведомление в моем приложении со следующим кодом:

//Notification Start notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); int icon = R.drawable.n1; CharSequence tickerText = "Call Blocker"; long when = System.currentTimeMillis(); //now Notification notification = new Notification(icon, tickerText, when); Intent notificationIntent = new Intent(context, Main.class); PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0); Context context = getApplicationContext(); CharSequence title = "Call Blocker"; text = "Calls will be blocked while driving"; notification.setLatestEventInfo(context, title, text, contentIntent); notification.flags |= Notification.FLAG_ONGOING_EVENT; notification.flags |= Notification.FLAG_SHOW_LIGHTS; notificationManager.notify(1, notification); } 

Мои уведомления срабатывают очень хорошо, но моя проблема в том, что, когда я нажимаю на уведомление в Центре уведомлений, он не запускает мое приложение.

В принципе, после нажатия на мое уведомление ничего не происходит! Что мне делать, чтобы начать мое основное действие после нажатия на мое уведомление. Благодарю.

См. Ниже код. Я использую это, и он открывает мою HomeActivity.

  NotificationManager notificationManager = (NotificationManager) context .getSystemService(Context.NOTIFICATION_SERVICE); Notification notification = new Notification(icon, message, when); Intent notificationIntent = new Intent(context, HomeActivity.class); notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent, 0); notification.setLatestEventInfo(context, title, message, intent); notification.flags |= Notification.FLAG_AUTO_CANCEL; notificationManager.notify(0, notification); 

Вот пример использования classа NotificationCompact.Builder, который является последней версией для создания уведомлений.

 private void startNotification() { Log.i("NextActivity", "startNotification"); // Sets an ID for the notification int mNotificationId = 001; // Build Notification , setOngoing keeps the notification always in status bar NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.ldb) .setContentTitle("Stop LDB") .setContentText("Click to stop LDB") .setOngoing(true); // Create pending intent, mention the Activity which needs to be //triggered when user clicks on notification(StopScript.class in this case) PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, StopScript.class), PendingIntent.FLAG_UPDATE_CURRENT); mBuilder.setContentIntent(contentIntent); // Gets an instance of the NotificationManager service NotificationManager mNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE); // Builds the notification and issues it. mNotificationManager.notify(mNotificationId, mBuilder.build()); } 

Пожалуйста, используйте приведенный ниже код для полного примера простого уведомления, в этом коде вы можете открыть приложение после нажатия на «Уведомление», оно решит вашу проблему.

 public class AndroidNotifications extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button notificationButton = (Button) findViewById(R.id.notificationButton); notificationButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { // Notification Title and Message Notification("Dipak Keshariya (Android Developer)", "This is Message from Dipak Keshariya (Android Developer)"); } }, 0); } }); } // Notification Function private void Notification(String notificationTitle, String notificationMessage) { NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); android.app.Notification notification = new android.app.Notification( R.drawable.ic_launcher, "Message from Dipak Keshariya! (Android Developer)", System.currentTimeMillis()); Intent notificationIntent = new Intent(this, AndroidNotifications.class); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); notification.setLatestEventInfo(AndroidNotifications.this, notificationTitle, notificationMessage, pendingIntent); notificationManager.notify(10001, notification); } } 

И см. Ниже ссылку для получения дополнительной информации.

Пример простого уведомления

Похоже, вы пропустили эту часть,

 notification.contentIntent = pendingIntent; 

Попробуйте добавить это, и он должен работать.

использовать это:

  Notification mBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.ic_music) .setContentTitle(songName).build(); mBuilder.contentIntent= PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT); 

contentIntent будет следить за открытием активности при нажатии на уведомление

Используйте ниже код для создания уведомления для открытой активности. Меня устраивает. Полный код

  Intent myIntent = new Intent(context, DoSomething.class); PendingIntent pendingIntent = PendingIntent.getActivity( context, 0, myIntent, Intent.FLAG_ACTIVITY_NEW_TASK); myNotification = new NotificationCompat.Builder(context) .setContentTitle("Exercise of Notification!") .setContentText("Do Something...") .setTicker("Notification!") .setWhen(System.currentTimeMillis()) .setContentIntent(pendingIntent) .setDefaults(Notification.DEFAULT_SOUND) .setAutoCancel(true) .setSmallIcon(R.drawable.ic_launcher) .build(); notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(MY_NOTIFICATION_ID, myNotification); 
 public static void notifyUser(Activity activity, String header, String message) { NotificationManager notificationManager = (NotificationManager) activity .getSystemService(Activity.NOTIFICATION_SERVICE); Intent notificationIntent = new Intent( activity.getApplicationContext(), YourActivityToLaunch.class); TaskStackBuilder stackBuilder = TaskStackBuilder.create(activity); stackBuilder.addParentStack(YourActivityToLaunch.class); stackBuilder.addNextIntent(notificationIntent); PendingIntent pIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); Notification notification = new Notification.Builder(activity) .setContentTitle(header) .setContentText(message) .setDefaults( Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE) .setContentIntent(pIntent).setAutoCancel(true) .setSmallIcon(drawable.notification_icon).build(); notificationManager.notify(2, notification); } 

Благодаря вышеприведенным сообщениям, основные строки – дистиллированные из более длинных ответов на код – которые необходимы для подключения уведомления с помощью набора кликов, чтобы открыть какое-либо действие приложения.

 private Notification getNotification(String messageText) { Notification.Builder builder = new Notification.Builder(this); builder.setContentText(messageText); // ... Intent appActivityIntent = new Intent(this, SomeAppActivity.class); PendingIntent contentAppActivityIntent = PendingIntent.getActivity( this, // calling from Activity 0, appActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT); builder.setContentIntent(contentAppActivityIntent); return builder.build(); } 

Именно так я и подошел.

 public class AppFCMService extends FirebaseMessagingService { private final static String TAG = "FCM Message"; String notify, requstId, Notification; PendingIntent pendingIntent; @Override public void onMessageReceived(RemoteMessage remoteMessage) { Log.d(TAG, "From: " + remoteMessage.getFrom()); Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody()); //split string and getting order id from notification String Str = remoteMessage.getNotification().getBody(); String[] tmp; tmp = Str.split(" "); String temp1 = tmp[0]; String temp2 = tmp[1]; String id = tmp[2]; notify = temp1 + " " + temp2; requstId = id; showNotification(remoteMessage.getNotification().getBody()); } private void showNotification(String messageBody) { // check whether session has been initiated or not if (new SessionHelper(getApplicationContext()).isLoggedIn()) { if (notify.equalsIgnoreCase("Travel request")) { Intent intent = new Intent(this, ViewTravelDetailsActivity.class); intent.putExtra("TravelRequestID", requstId); intent.putExtra("BackPress", "Notify"); pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT); } else if (notify.equalsIgnoreCase("Timesheet replied")) { Intent intent = new Intent(this, ViewReplyActivity.class); intent.putExtra("timesheetActivityID", requstId); intent.putExtra("BackPress", "Notify"); intent.putExtra("RealmData", "DeleteRealm"); intent.putExtra("isToday", "true"); pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT); } else { Intent intent = new Intent(this, Dashboard.class); intent.putExtra("timesheetActivityID", requstId); pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT); } } else { Intent intent = new Intent(this, LoginActivity.class); intent.putExtra("timesheetActivityID", requstId); pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT); } Bitmap notifyImage = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher); Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.mipmap.ic_launcher) .setLargeIcon(notifyImage) .setColor(Color.parseColor("#FFE74C3C")) .setContentTitle("TEST") .setContentText(messageBody) .setAutoCancel(true) .setSound(defaultSoundUri) .setContentIntent(pendingIntent); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(0, notificationBuilder.build()); } } 

Используйте мой пример …

  public void createNotification() { NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.icon, "message", System.currentTimeMillis()); // Hide the notification after its selected notification.flags |= Notification.FLAG_AUTO_CANCEL; Vibrator vibrator = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE); long[] pattern = { 0, 100, 600, 100, 700}; vibrator.vibrate(pattern, -1); Intent intent = new Intent(this, Main.class); PendingIntent activity = PendingIntent.getActivity(this, 0, intent, 0); String sms = getSharedPreferences("SMSPREF", MODE_PRIVATE).getString("incoming", "EMPTY"); notification.setLatestEventInfo(this, "message" , sms, activity); notification.number += 1; notificationManager.notify(0, notification); } 
  • Лучший способ сериализации NSData в hexadeximal string
  • Обнаруживать новое уведомление для Android
  • Отсутствие права на уведомление Push Push
  • Отключить звук из NotificationChannel
  • getIntent () Дополнительно всегда NULL
  • возобновление деятельности извещения
  • PendingIntent работает правильно для первого уведомления, но неправильно для остальных
  • Android Notification Sound
  • Уведомления Android с кнопками на нем
  • Определите addAction для уведомлений Android
  • Android: Как создать уведомление «Ongoing»?
  • Давайте будем гением компьютера.