1

直面している問題を探し回っていますが、GoogleCloudMessaging から InstanceID を取得しようとして得たものに関連するものはまだ見つかりません。IntentService を拡張するクラスで呼び出しを設定しようとしましたが、AsyncTask を使用してバックグラウンドで呼び出すことも試みましたが、役に立ちませんでした。

適切な情報を取得するために、マニフェストとアプリケーションをセットアップする方法に関するチュートリアルに従っています。何が間違っているのか、誰にも手がかりがありますか? 私のログによると、InstanceID.getInstance(getApplicationContext()); に nullPointerException があるとのことです。

私の電話:

private class RegisterGCM extends IntentService{
    public RegisterGCM(){
        super("GcmIntentService");
        registerDevice();
    }
    private void registerDevice(){
        InstanceID instanceId = InstanceID.getInstance(getApplicationContext());

        //Constants contains GCM_SENDER_ID which is the project number from Google Developer Console
        String token = instanceId.getToken(Constants.GCM_SENDER_ID, GoogleCloudMessaging.INSTANCE_ID_SCOPE);
    }
}

ログイン後にこのクラスを LandingPage クラスに配置し、次のように呼び出します。

new RegisterGCM();

これは、プレイ サービスが最新で更新されているかどうかを確認した直後に呼び出されます。

何か案は?より多くの情報を提供する必要がある場合は提供できますが、これは私が投稿できる情報のほんの一部です。

編集:インテントフィルターをマニフェストのサービスに追加し、getApplicationContext() が null であるかどうかを確認しようとしましたが、これは戻ってくる例外が教えてくれるものです:

06-15 16:42:38.614: W/System.err(17295): java.lang.NullPointerException:   Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference
06-15 16:42:38.624: W/System.err(17295):    at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:110)
06-15 16:42:38.624: W/System.err(17295):    at com.google.android.gms.iid.InstanceID.zza(Unknown Source)
06-15 16:42:38.624: W/System.err(17295):    at com.google.android.gms.iid.InstanceID.getInstance(Unknown Source)
06-15 16:42:38.624: W/System.err(17295):    at .gcmnotification.GcmIntentService.registerDevice(GcmIntentService.java:33)
06-15 16:42:38.624: W/System.err(17295):    at .gcmnotification.GcmIntentService.<init>(GcmIntentService.java:29)
06-15 16:42:38.624: W/System.err(17295):    at .LandingPageActivity.onCreate(LandingPageActivity.java:115)
06-15 16:42:38.624: W/System.err(17295):    at android.app.Activity.performCreate(Activity.java:6289)
06-15 16:42:38.624: W/System.err(17295):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
06-15 16:42:38.624: W/System.err(17295):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
06-15 16:42:38.624: W/System.err(17295):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2777)
06-15 16:42:38.624: W/System.err(17295):    at android.app.ActivityThread.access$900(ActivityThread.java:179)
06-15 16:42:38.624: W/System.err(17295):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1462)
06-15 16:42:38.624: W/System.err(17295):    at android.os.Handler.dispatchMessage(Handler.java:102)
06-15 16:42:38.624: W/System.err(17295):    at android.os.Looper.loop(Looper.java:145)
06-15 16:42:38.624: W/System.err(17295):    at android.app.ActivityThread.main(ActivityThread.java:5972)
06-15 16:42:38.624: W/System.err(17295):    at java.lang.reflect.Method.invoke(Native Method)
06-15 16:42:38.624: W/System.err(17295):    at java.lang.reflect.Method.invoke(Method.java:372)
06-15 16:42:38.624: W/System.err(17295):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388)
06-15 16:42:38.624: W/System.err(17295):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183)

これは私の catch ブロックから返されたエラー メッセージです: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference

getApplicationContext が null を返していると思いますか?

4

2 に答える 2

1

RegisterGCM() のインスタンスを作成するべきではありません。「ランディング ページ」から startService() を呼び出して開始する必要があります。

if (checkPlayServices()) {
    // Start IntentService to register this application with GCM.
    Intent intent = new Intent(this, RegisterGCM.class);
    startService(intent);
}

ここで完全な例を参照してください

于 2015-06-18T01:14:08.703 に答える