2014-07-05 76 views
0

我有一個android應用程序,我需要在用戶正在運行某個特定活動時發生某些事情,但需要對其進行身份驗證。GcmIntentService將消息發送到正在運行的活動

通知不會爲我完成這項工作,因爲我需要通過對話框通知用戶,將數據發送到服務器並啓動另一個活動......我的意思是,我知道當這封郵件發送時,用戶將使用該應用程序並查看屬於我想要發送消息的acrivity的屏幕。

該消息應由GCM服務觸發。 我已經做了所有的事情來接收消息,我目前有我的GcmIntentService正常工作(繼this鏈接)。現在

,我嘗試將信息發送到活動中,由它定義一個處理程序是這樣的:

public Handler _handler = new Handler() { 
     @Override 
     public void handleMessage(Message msg) { 

我有2個問題在這裏:

1)我真的不知道如果這個處理程序將在實際運行活動中觸發

2)在這個「handleMessage」事件中,我沒有運行活動的上下文,所以我不能,例如,上升AlertDialog(我得到NullPointerException)

我該如何做到這一點?我是否應該重新考慮服務和活動之間的溝通?

謝謝!

回答

0

的標準方法在與Android的通知用戶:This

校驗碼:

public void sendNotification(String msg) { 
    mNotificationManager = (NotificationManager) context 
      .getSystemService(Context.NOTIFICATION_SERVICE); 

    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, 
      new Intent(context, returnClass), 0); 

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
      context) 
      .setSmallIcon(R.drawable.notification) 
      .setContentTitle(
        context.getResources().getString(R.string.app_name)) 
      .setAutoCancel(true) 
      .setStyle(new NotificationCompat.BigTextStyle().bigText(msg)) 
      .setContentText(msg); 

    mBuilder.setContentIntent(contentIntent); 
    mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build()); 
} 

對於你的問題2-

在此 「的handleMessage」 事件中,我不有運行活動的上下文,所以我不能,例如,上升AlertDialog(我得到NullPointerException)

您可以使用此作爲Refrence上下文(GcmService.this)

希望能夠幫助

+0

1)通知我不會做的工作,因爲我需要通過一個對話框,告知用戶,發送數據發送到服務器並啓動另一個活動...我的意思是,我知道當這個消息被髮送時,用戶將使用應用程序並且看到屬於我想要發送消息的acrivity的屏幕2)該消息在我的活動中,而不是在我的服務中,而「此」也不起作用 – Nicole

相關問題