2012-04-25 6 views
5

Ich bin ein großer Noob Android-Programmierung so leid, wenn dies eine einfache Aufgabe ist. Ich habe das Push-Benachrichtigungs-Tutorial für Push-Benachrichtigungen von Vogella ziemlich genau befolgt (http://www.vogella.com/articles/AndroidCloudToDeviceMessaging/article.html). Ich habe einige andere Fragen zum Stapelüberlauf gelesen, aber ich bin ein wenig verwirrt darüber, wie ich eine Absicht öffnen kann, sobald ich die Benachrichtigung erhalten habe.Eröffnungsaktivität nach dem Klicken auf Push-Nachricht android

Zum Beispiel, wenn ich nur wollte, dass die Benachrichtigung mich zu einer Website führt, wie würde das funktionieren? Müsste es unter meiner MessageReceivedActivity oder einem anderen Projekt/Klasse alle zusammen gehen?

Dank

ist hier der Code, den ich für meine C2DMMessageReceiver

@Override 
public void onReceive(Context context, Intent intent) { 
    String action = intent.getAction(); 
    Log.w("C2DM", "Message Receiver called"); 
    if ("com.google.android.c2dm.intent.RECEIVE".equals(action)) { 
     Log.w("C2DM", "Received message"); 
     final String payload = intent.getStringExtra("payload"); 
     Log.d("C2DM", "dmControl: payload = " + payload); 
     // TODO Send this to my application server to get the real data 
     // Lets make something visible to show that we received the message 
     createNotification(context, payload); 

    } 
} 

public void createNotification(Context context, String payload) { 
    NotificationManager notificationManager = (NotificationManager) context 
      .getSystemService(Context.NOTIFICATION_SERVICE); 
    Notification notification = new Notification(R.drawable.ic_launcher, 
      "Message received", System.currentTimeMillis()); 
    // Hide the notification after its selected 
    notification.flags |= Notification.FLAG_AUTO_CANCEL; 

    //adding LED lights to notification 
    notification.defaults |= Notification.DEFAULT_LIGHTS; 

    Intent intent = new Intent(context, MessageReceivedActivity.class); 
    intent.putExtra("payload", payload); 

    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, 
      intent, 0); 
    notification.setLatestEventInfo(context, "Message", 
      "New message received", pendingIntent); 
    notificationManager.notify(0, notification); 

} 

}

Antwort

9

wenn Sie eine Website auf Benachrichtigung klicken versuchen, diese öffnen wollen:

public void createNotification(Context context, String payload) { 
     NotificationManager notificationManager = (NotificationManager) context 
       .getSystemService(Context.NOTIFICATION_SERVICE); 
     Notification notification = new Notification(R.drawable.ic_launcher, 
       "Message received", System.currentTimeMillis()); 
     // Hide the notification after its selected 
     notification.flags |= Notification.FLAG_AUTO_CANCEL; 

     //adding LED lights to notification 
     notification.defaults |= Notification.DEFAULT_LIGHTS; 

     Intent intent = new Intent("android.intent.action.VIEW", 
     Uri.parse("http://my.example.com/")); 
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, 
       intent, 0); 
     notification.setLatestEventInfo(context, "Message", 
       "New message received", pendingIntent); 
     notificationManager.notify(0, notification); 

    } 
+0

Wenn ich dies tue, nachdem ich auf meine Push-Benachrichtigung geklickt habe, sehe ich nur die Nachricht "Neue Nachricht erhalten". Vielleicht muss etwas der pendingIntent sagen, um die Absicht zu öffnen? – Kevin

+0

Nevermind, habe es durch deinen Code herausgefunden. Ich musste nur 1 Kleinigkeit ändern. Vielen Dank! – Kevin

0

In Ihrem Basisempfänger für C2DM oder der Klasse der, dass extentd Basis-Empfänger haben Sie eine handle haben() ::

Unten ist der Beispielcode für Handle-Nachricht, die die Aktivität startet ::

@Override 
    protected void handleMessage(Context context, Intent intent) { 
     String regId = C2DMessaging.getRegistrationId(context); 
     String logKey = this.getClass().getSimpleName(); 
     String title=""; 
     String message=""; 
     if (regId!= null) { 
      if (intent.hasExtra(Constants.TITLE)) { 
       title = intent.getStringExtra(Constants.TITLE); 
      } 
      if(intent.hasExtra(Constants.MESSAGE)){ 
       message = intent.getStringExtra(Constants.MESSAGE); 
      } 
      // TODO Send this to my application server to get the real data 
      // Lets make something visible to show that we received the message 
      if(!title.equals("") && !message.equals("")) 
       createNotificationForMsg(context,title,message); 
     } 
    } 

    @Override 
    public void createNotificationForMsg(Context context,String title,String message) { 
     final String logKey = this.getClass().getSimpleName(); 

     try { 
      NotificationManager notificationManager = (NotificationManager) context 
        .getSystemService(Context.NOTIFICATION_SERVICE); 
      Notification notification = new Notification(R.drawable.icon, 
        "update(s) received", System.currentTimeMillis()); 
      // Hide the notification after its selected 
      notification.flags |= Notification.FLAG_AUTO_CANCEL; 
      //adding sound to notification 
      notification.defaults |= Notification.DEFAULT_SOUND;    

       Intent intent = new Intent(context, YourAlertActivity.class); 

       if(Constants.LOG)Log.d(logKey, Constants.TITLE +": "+ title +" , "+Constants.MESSAGE+": "+message); 
       intent.putExtra(Constants.TITLE, title); 
       intent.putExtra(Constants.MESSAGE, message); 

       PendingIntent pendingIntent = PendingIntent.getActivity(context, Calendar.getInstance().get(Calendar.MILLISECOND), intent, android.content.Intent.FLAG_ACTIVITY_NEW_TASK); 
       notification.setLatestEventInfo(context, "Castrol", 
         title+"update Received", pendingIntent); 
       notificationManager.notify(Calendar.getInstance().get(Calendar.MILLISECOND), notification); 



     } catch (Exception e) { 
//   MessageReceivedActivity.view.setText("createNotificationFor Msg: " 
//     + e.toString()); 
     } 
    } 
+1

Sorry, aber nicht Empfängerbasis Nachrichtenempfänger oder Registrierung Empfänger bedeuten? Ich nahm an, dass die Aktivität unter MessageReceivedActivity gehen würde, was die Aktivität erweitert. Aber würde es unter MessageReceiver gehen, der Broadcast Receiver erweitert? – Kevin

+0

können Sie etwas von Ihrem Code hinzufügen? –

+0

Ich habe meine Frage so bearbeitet, dass sie meinen Code enthält. Zum Beispiel möchte ich sagen, dass www.google.com beim Klicken auf die Benachrichtigung geöffnet werden soll. Ich verstehe, wie man es mit Intent macht, nicht sicher, wie pendingIntent funktioniert – Kevin

Verwandte Themen