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

アプリに通知が届いたときにアクティビティを開始するために通常使用する方法を投稿します。すべての構成を確認し、関心のない構成を削除してください。

@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 に答える
0

次のように実行できるはずです。getApplication()。startActivity(resactivity);

于 2013-01-28T15:40:50.667 に答える