1

Android エミュレーターから GCM 登録 ID を取得しようとしていますが、プログラムをデバッグするとクラッシュします。これは私の MainActivity コードです:

  try {
       GCMRegistrar.checkDevice(this);       //  <-- Crashes here
       GCMRegistrar.checkManifest(this);
       final String regId = GCMRegistrar.getRegistrationId(this);
       if (regId.equals("")) 
       {
         GCMRegistrar.register(this,Sender_ID);
       }
       else
       {
         Log.v("Registrationnnnnn", "Already registered");
       }
   }
   catch(Exception e)
   {
       Log.e("ErrorHAi",e.getMessage());
   }

この行は、デバイスが GCM をサポートしているかどうかを確認することを読みましたが、SDK Manager エクストラから Google Cloud Messaging をインストールしました。私もインストールしました

Android SDK ツール : rev 20
Android SDK プラットフォーム ツール : rev 12
Android 4.1 Api 16

私が言及するとき

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" />

これは私のマニフェスト ファイルで実行されますが、上記のコードで述べたようにクラッシュします。

現在、Android 4.1 API レベル 16 でこのアプリケーションを実行しています。

アップデート:

私のログキャット:

07-03 20:34:25.878: E/Trace(906): error opening trace file: No such file or directory (2)
07-03 22:30:57.748: E/Trace(1016): error opening trace file: No such file or directory (2)
07-03 22:31:01.998: E/AndroidRuntime(1016): FATAL EXCEPTION: main
07-03 22:31:01.998: E/AndroidRuntime(1016): java.lang.RuntimeException: Unable to instantiate receiver com.pack.gcm.MyBroadcastReceiver: java.lang.ClassNotFoundException: com.pack.gcm.MyBroadcastReceiver
07-03 22:31:01.998: E/AndroidRuntime(1016):     at android.app.ActivityThread.handleReceiver(ActivityThread.java:2210)
07-03 22:31:01.998: E/AndroidRuntime(1016):     at android.app.ActivityThread.access$1500(ActivityThread.java:130)
07-03 22:31:01.998: E/AndroidRuntime(1016):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1271)
07-03 22:31:01.998: E/AndroidRuntime(1016):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-03 22:31:01.998: E/AndroidRuntime(1016):     at android.os.Looper.loop(Looper.java:137)
07-03 22:31:01.998: E/AndroidRuntime(1016):     at android.app.ActivityThread.main(ActivityThread.java:4745)
07-03 22:31:01.998: E/AndroidRuntime(1016):     at java.lang.reflect.Method.invokeNative(Native Method)
07-03 22:31:01.998: E/AndroidRuntime(1016):     at java.lang.reflect.Method.invoke(Method.java:511)
07-03 22:31:01.998: E/AndroidRuntime(1016):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
07-03 22:31:01.998: E/AndroidRuntime(1016):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-03 22:31:01.998: E/AndroidRuntime(1016):     at dalvik.system.NativeStart.main(Native Method)
07-03 22:31:01.998: E/AndroidRuntime(1016): Caused by: java.lang.ClassNotFoundException: com.pack.gcm.MyBroadcastReceiver
07-03 22:31:01.998: E/AndroidRuntime(1016):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
07-03 22:31:01.998: E/AndroidRuntime(1016):     at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
07-03 22:31:01.998: E/AndroidRuntime(1016):     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
07-03 22:31:01.998: E/AndroidRuntime(1016):     at android.app.ActivityThread.handleReceiver(ActivityThread.java:2205)
07-03 22:31:01.998: E/AndroidRuntime(1016):     ... 10 more

すべての前提条件をインストールしたにもかかわらず、なぜそのようなエラーが発生するのかわかりません。

4

1 に答える 1

0

ほとんどの Android G2DM は Android エミュレーターをサポートしていません。これは、基本的にデバイスに Google アカウントがあることに依存しており、Android エミュレーターにはそのようなアカウントがないため、デバイスを登録しようとすると、必要な Google アカウントが見つからないためです。登録を完了するには、c2dm-only-registered-google-account-receives-messages-from-serverをご覧ください

于 2012-07-03T14:32:34.197 に答える