Не удалось найти пакет com.google.android.gsf.

Я пытаюсь использовать новую систему Google Cloud Messaging, но у меня есть некоторые проблемы.

Я прочитал документ «Начало работы» и просмотрел демонстрационное приложение; После этого я применил требования к моему приложению, тогда я создал новое виртуальное устройство с API 16.

Но когда я пытаюсь зарегистрировать свое устройство в GCM, он терпит неудачу из-за этой строки:

GCMRegistrar.checkDevice(getApplicationContext()); 

В logcat я вижу эти ошибки:

 07-05 07:06:31.925: E/AndroidRuntime(691): FATAL EXCEPTION: main 07-05 07:06:31.925: E/AndroidRuntime(691): java.lang.UnsupportedOperationException: Device does not have package com.google.android.gsf 07-05 07:06:31.925: E/AndroidRuntime(691): at com.google.android.gcm.GCMRegistrar.checkDevice(GCMRegistrar.java:83) 07-05 07:06:31.925: E/AndroidRuntime(691): at aero.tav.mobile.genel$4.onClick(genel.java:201) 07-05 07:06:31.925: E/AndroidRuntime(691): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166) 07-05 07:06:31.925: E/AndroidRuntime(691): at android.os.Handler.dispatchMessage(Handler.java:99) 07-05 07:06:31.925: E/AndroidRuntime(691): at android.os.Looper.loop(Looper.java:137) 07-05 07:06:31.925: E/AndroidRuntime(691): at android.app.ActivityThread.main(ActivityThread.java:4745) 07-05 07:06:31.925: E/AndroidRuntime(691): at java.lang.reflect.Method.invokeNative(Native Method) 07-05 07:06:31.925: E/AndroidRuntime(691): at java.lang.reflect.Method.invoke(Method.java:511) 07-05 07:06:31.925: E/AndroidRuntime(691): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 07-05 07:06:31.925: E/AndroidRuntime(691): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 07-05 07:06:31.925: E/AndroidRuntime(691): at dalvik.system.NativeStart.main(Native Method) 

Я добавил gcm.jar в свой классный путь; Я не знаю, что случилось.

Мне кажется, что вы используете неправильный эмулятор.

Эмулятор по умолчанию использует обычный эмулятор Android, у которого нет пакетов Google, и не может запускать всевозможные вещи, такие как карты, c2dm и всевозможные подобные вещи.

Что вы хотите сделать, это создать новый эмулятор, который может поддерживать API Google.

Затем, когда вы запускаете проект, выберите эмулятор, который запускает целевое имя Google APIs (Google Inc).

удачи.

Вероятно, это работает на устройстве, которое не поддерживает GCM, поэтому ваш вызов в GCMRegistrar.checkDevice (это); Бросает исключение. Проверьте свой логарифм, чтобы убедиться.

Если вы тестируете его на эмуляторе, убедитесь, что эмулятор настроен для использования API Google. Когда вы создаете эмулятор, в новом окне AVD есть поле «Target». Выберите что-то в этом поле, которое говорит «API Google».

Введите описание изображения здесь