2014-07-05 110 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

相关问题