0

我有一个 GCMIntentService 类,在其中我得到了一些从我的服务器返回的消息。当某条消息到达我的应用程序时,我希望能够启动某个活动。例如,如果在我的 onMessage() 方法(onMethod() 是方法,并且在应用程序中从服务器接收消息的第一个位置)到达字符串 =“tomatoe”,我想开始一个特定的活动。我现在知道的开始活动的方式是:

Intent resactivity = new Intent(getApplicationContext(), ResponseActivity.class);
            resactivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(resactivity);

问题是 GCMIntentService 不是扩展活动的类,我相信我不能为此目的使用此代码。是否有某种方法可以通过在该类中创建意图来从非活动的类启动活动?

4

3 回答 3

5

问题是 GCMIntentService 不是扩展活动的类,我相信我不能为此目的使用此代码。

GCMIntentService继承自Context,这startActivity()是定义的地方。

但是请记住,您的用户可能会用干草叉或机关枪攻击您,因为您会在随机时间点弹出活动,也许是在他们正在做的其他事情的中间。请将此行为配置为可配置,否则请非常确定您的用户会欣赏这些中断。

于 2013-01-28T15:25:26.547 回答
0

您应该可以这样做: getApplication().startActivity(resactivity);

于 2013-01-28T15:40:50.667 回答
0

当通知到达我的应用程序时,我发布了我通常用来启动活动的方法。查看所有配置并删除您不感兴趣的配置:

@Override
protected void onMessage(Context context, Intent intent) {
    String app_name = context.getString(R.string.app_name);
    String message =  intent.getStringExtra("payload");
    String ns = Context.NOTIFICATION_SERVICE;
    NotificationManager notificationManager = (NotificationManager) context.getSystemService(ns);
    int icono = R.drawable.ic_stat_notify;
    long time = System.currentTimeMillis();
    Notification notification = new Notification(icono, app_name, time);
    notification.defaults |= Notification.DEFAULT_SOUND;
    Intent notificationIntent = new Intent(context, ResponseActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, -1, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    notification.when = System.currentTimeMillis();  
    notification.flags |= Notification.FLAG_AUTO_CANCEL; 
    notification.setLatestEventInfo(context, app_name, message, pendingIntent);
    notificationManager.notify(0, notification);
}
于 2013-01-28T15:27:56.690 回答