2012-07-04 8 views
0

в this example, приемник вещания начинает работу с услугой. в экземпляре IntentService он запускает метод под названием runIntentInService, этот метод содержит объект PowerManager.WakeLock, чем запуск службы.GCM не может начать регистрацию вручную

теперь, когда я вручную запускает процесс регистрации (от mainActivity) с:

Intent registrationIntent = new Intent("com.google.android.c2dm.intent.REGISTER"); 
    // sets the app name in the intent 
    registrationIntent.putExtra("app", PendingIntent.getBroadcast(mainActivity.this, 0, new Intent(), 0)); 
    registrationIntent.putExtra("sender", _senderID); 
    startService(registrationIntent); 

в IntentService, объект PowerManager.WakeLock еще не инициализировать, так это нуль.

Я использую this code для регистрации из mainActivity. вместо этого следует использовать the following?

GCMRegistrar.checkDevice(this); 
GCMRegistrar.checkManifest(this); 
final String regId = GCMRegistrar.getRegistrationId(this); 
if (regId.equals("")) { 
    GCMRegistrar.register(this, SENDER_ID); 
} else { 
    Log.v(TAG, "Already registered"); 
} 

Спасибо!

ответ

0

GCMRegistrar - это всего лишь класс-помощник, который выполняет то же самое, что вы упомянули, т. Е. Отправляет заявки на регистрацию и т. Д. Так что нет необходимости менять код.

+0

finaly Я использовал демонстрационную версию groid-клиента android. теперь нужно иметь дело только с сервером – Li3ro