2013-07-09 2 views
2

Я работаю с уведомлением о whit push. Когда пользователь нажимает на уведомление, я хочу запустить приложение, если оно не запущено, или принести его на передний план, если он запущен. Спасибокак начать применение или принести фронт, когда пользователь нажимает на уведомление, нажмите на android

ответ

0

Вы делаете это, создавая PendingIntent.
Например, при нажатии на уведомление будет запускаться MainActivity.

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

Notification noti = new Notification.Builder(this) 
     .setContentTitle("Notication title") 
     .setContentText("Content text") 
     .setContentIntent(pendingIntent).build(); 
+0

извините, но это не работает, это делает новый экземпляр действием. – user1796624

+0

Затем вы можете просто изменить PendingIntent.getActivity() на PendingIntent.getBroadcast() и сделать свой IntentReceiver получить это намерение и делать все, что захотите. – Mine

1

реализация pending intent.
Код

Intent pi = new Intent(); 
pi.setClass(getApplicationContext(), youactivity.class); 
// The PendingIntent to launch our activity if the user selects this notification 
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,pi, PendingIntent.FLAG_UPDATE_CURRENT); 
String msgText = mMessage; 
// construct the Notification object. 
Notification notif = new Notification(R.drawable.icon, msgText,System.currentTimeMillis()); 

манифеста

<activity android:name="com.InfoActivity" android:noHistory="false android:excludeFromRecents="false"></activity> 
0

Я не знаю, вы говорите о Google Cloud Messaging или нет. Но если это обычное уведомление, то при создании вашего уведомления вы должны предоставить ожидающее намерение. Просто поместите свой желаемый класс в ожидающее намерение, чтобы при нажатии пользователем на это уведомление вы попадаете в свое так называемое приложение. Отрывок:

PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, 
     "Your application activity".class), PendingIntent."Flag you want"); 

После этого используйте это намерение при создании уведомления. Это метод setContentIntent («выше намерения») и запускать уведомление с помощью NotificationManager!

+0

необходимо добавить следующие флаги: aim.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction (Intent.ACTION_MAIN); intent.addCategory (Intent.CATEGORY_LAUNCHER); к цели запуска, чтобы начать приложение, и – user1796624

+0

Напоминаю! :) – thegiga

1

это complite код, который я нашел ответ здесь Bring application to front after user clicks on home button

Intent intent = new Intent(ctx, SplashScreen.class); 
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      intent.setAction(Intent.ACTION_MAIN); 
      intent.addCategory(Intent.CATEGORY_LAUNCHER); 

      PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0, 
        intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT), 
        PendingIntent.FLAG_CANCEL_CURRENT); 

      NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
        ctx).setContentTitle(extras.getString("title")) 
        .setContentText(extras.getString("message")) 
        .setSmallIcon(R.drawable.ic_launcher) 
        .setContentIntent(contentIntent); 
      Notification noti = mBuilder.build(); 
      noti.flags = Notification.DEFAULT_LIGHTS 
       | Notification.FLAG_AUTO_CANCEL; 
      mNotificationManager.notify(NOTIFICATION_ID, noti); 

важные вещи являются флаги на Intent, это открыть приложение или вывести его на фронт, если открыт, или ничего не делать, если вы нажимаете на уведомление во время просмотра приложения.

Смежные вопросы