在Android中显示GCM消息

时间:2013-02-12 07:47:19

标签: java android google-cloud-messaging

我为Android编写应用程序,它将与GCM进行通信。我可以收到消息,但我想在屏幕上显示并收到错误 有我的代码,我有问题在行Activity =(活动)上下文;
我收到错误“此类文件的JAR属于容器'Android依赖项',它不允许修改其条目上的源附件”

@Override
protected void onMessage(Context context, Intent indent) {

    String message = indent.getExtras().getString("message").toString();

    Log.i(TAG, "new message= " + message);

    Activity act = (Activity) context;  
    if(act != null)
    {
        TextView pushNotification = (TextView) act.findViewById(R.id.txtPushNotify);    
        pushNotification.setText(message);
    }
}

我做错了什么?该方法在类

public class GCMIntentService extends GCMBaseIntentService {...}

有我的LogCat

FATAL EXCEPTION:IntentService [GCMIntentService-19193409722-1] java.lang.ClassCastException:android.app.Application
at com.sagar.gcma.GCMIntentService.onMessage(GCMIntentService.java:41)
在com.google.android.gcm.GCMBaseIntentService.onHandleIntent(GCMBaseIntentService.java:223)
在android.app.IntentService $ ServiceHandler.handleMessage(IntentService.java:59)
在android.os.Handler.dispatchMessage(Handler.java:99)
在android.os.Looper.loop(Looper.java:123)
在android.os.HandlerThread.run(HandlerThread.java:60)

2 个答案:

答案 0 :(得分:4)

请尝试以下代码。

Intent myIntent = new Intent(context.getApplicationContext(), YourActivity.class);
Bundle bundle = new Bundle();
bundle.putString("message", message);
myIntent.putExtras(bundle);
context.getApplicationContext().startActivity(myIntent);

然后在activity内写下显示代码的消息。

答案 1 :(得分:1)

错误消息“此类文件的JAT属于容器'Android依赖项',它不允许修改其条目上的源附件”似乎(某种程度上)与我无关,因为它是由...生成的错误消息IDE,与您的实际代码无关。

我会对代码中的演员小心:

Activity act = (Activity) context;  

您确定传递的上下文实际上(无论如何)是您的活动吗?

编辑:

阅读您的编辑,我可以确认您收到的上下文是您的申请,而不是活动。

并且您需要将该消息(您的服务收到的消息)转发给前台活动(如果处于活动状态)。如果没有前台活动,请使用通知或类似的东西。