我为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)
答案 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;
您确定传递的上下文实际上(无论如何)是您的活动吗?
编辑:
阅读您的编辑,我可以确认您收到的上下文是您的申请,而不是活动。
并且您需要将该消息(您的服务收到的消息)转发给前台活动(如果处于活动状态)。如果没有前台活动,请使用通知或类似的东西。