0

現在、Android で Google GCM プッシュ通知サービスを使用しています。PUSH を完了しましたが、うまく機能しています。ここで、Google サーバーへの登録が成功したときに、サーバーにデバイスの詳細を送信する必要があります。そのため、Activity オブジェクトの参照が必要です。

   protected void onRegistered(Context context, String registrationId) {
        Log.i(TAG, "Device registered: regId = " + registrationId);
        displayMessage(context, getString(R.string.gcm_registered));           
        registerToMyServer(context, registrationId); //initiate a rest call
        // the context above returns application context not the activity context
    }

   public void registerToMyServer(Activity activity, String rid){
         //handing REST
   }

誰でもこれで私を助けることができますか?GCMBaseIntentService サブクラスの onRegistered() メソッドから Activity 参照を取得するにはどうすればよいでしょうか。

4

1 に答える 1

1

アクティビティへの参照が必要なのはなぜですか? ユーザーの操作が必要ない場合は、Activity は必要ありません。

登録が成功したら、サーバーにデバイスの詳細を送信する必要があります...

これは、現在の onRegistered メソッドで実行できます (もちろん、これを処理するクラスを作成する必要があります)。

もう 1 つ理解しなければならないことは、GCMBaseIntentService はサービスであるということです。したがって、登録を完了したときに、アクティビティが存在する場合と存在しない場合があります。したがって、設計を再検討してください。

電話の詳細を取得するためにアクティビティ参照は必要ありません。アクティビティはコンテキストから拡張されるため、提供されているコンテキストから取得できます。

 ↳  android.content.Context
       ↳    android.content.ContextWrapper
           ↳    android.view.ContextThemeWrapper
               ↳    android.app.Activity

詳細については、C:\Users\USERNAME\android-sdks\extras\google\gcm\samples\gcm-demo-client\src\com\google\android\gcm\demo\app\ にあるサンプルを参照してください。 GCMintentService.java および ServerUtilities.java

于 2013-01-29T16:07:05.150 に答える