2012-07-03 6 views
1

Я пытаюсь получить свой идентификатор регистрации GCM с моего эмулятора Android, но когда я отлаживаю программу, вы можете ее отключить. Это мой MainActivity код:Android GCM Получить регистрацию ID

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.But Я установил Google Cloud Messaging из массовки SDK Manager. Я также установил

Android SDK Tools: Рев 20
Android SDK Platform Tools: Рев 12
Android 4,1 Api 16

Когда я упоминаю

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

это в моем файле манифеста он но сбой, как я уже упоминал в приведенном выше коде. Но если я изменю targetSdkVersion на xx, как указано here, то он говорит Install_Failed_OLDER_SDK.

Я в настоящее время работает это приложение на Android уровне 4,1 API 16.

Update:

Мой Logcat:

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 

Теперь я не знаю, почему он дает такие ошибки, хотя я установил все предварительные условия.

+0

Рассмотрите принятый ответ, если вы нашли его хорошим !! –

+0

Я всегда принимаю его, но если он не решает мою проблему, то я этого не делаю. – Mj1992

+0

Можете ли вы предоставить журналы Logcat? –

ответ

0

В основном Android G2DM не поддерживает эмулятор Android, поскольку в основном это зависит от того, что устройство имеет учетную запись google, а у эмуляторов Android нет такой учетной записи, поэтому, когда она пытается зарегистрировать устройство, она не находит необходимую учетную запись google для завершения регистрации смотрите на c2dm-only-registered-google-account-receives-messages-from-server

+0

Я использую gcm not c2dm, это имеет значение? и google дали примеры на сайте developer.android.com, поэтому я думаю, что это означает, что он поддерживает. – Mj1992

+0

Я прочитал ссылку, которую вы там дали, он успешно восстановил regID. Но я застрял на первой линии и не смог получить regID. – Mj1992

Смежные вопросы