OnRegistered () de GCMIntentService jamais appelé

J'essaie d'enregistrer mon application sur GCM mais je ne sais pas pourquoi mon application n'est jamais enregistrée. GCMRegistrar.register(this, SENDER_ID); Est appelé mais onRegistered () de mon GCMIntentService n'est jamais appelé. Je ne sais pas pourquoi .

C'est mon Logcat

  • Comment résoudre l'espace disque faible pour Android Studio?
  • Développement d'Android plus rapide
  • Gardez le texte dans TextView avec drawableLeft centered
  • GetResources (). GetColor () est obsolète
  • Différence entre une vue AppCompat et une vue Android normale
  • Désactiver l'animation par défaut de Portrait vers Paysage
  •  01-17 11:03:00.015: D/GCMRegistrar(3509): resetting backoff for com.abc.xyz.ui.activity 01-17 11:03:03.210: V/GCMRegistrar(3509): Registering app com.abc.xyz.ui.activity of senders 964256581311 01-17 11:03:06.070: V/GCMBroadcastReceiver(3509): onReceive: com.google.android.c2dm.intent.REGISTRATION 01-17 11:03:06.070: V/GCMBroadcastReceiver(3509): GCM IntentService class: com.abc.xyz.ui.activity.GCMIntentService 01-17 11:03:06.070: V/GCMBaseIntentService(3509): Acquiring wakelock 

    Et c'est mon manifeste complet

      <?xml version="1.0" encoding="utf-8"?> <manifest package="com.abc.xyz.ui.activity" android:versionCode="1" android:versionName="1.5.6" xmlns:android="http://schemas.android.com/apk/res/android"> <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="16"/> <uses-feature android:name="android.hardware.usb.host"/> <!-- This app has permission to register and receive data message. --> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.BLUETOOTH" /> <!-- GCM requires a Google account. --> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <!-- Keeps the processor from sleeping when a message is received. --> <uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- Creates a custom permission so only this app can receive its messages. NOTE: the permission *must* be called PACKAGE.permission.C2D_MESSAGE, where PACKAGE is the application's package name. --> <uses-permission android:name="com.abc.xyz.ui.activity.permission.C2D_MESSAGE" /> <permission android:name="com.abc.xyz.ui.activity.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@android:style/Theme.Holo.Light" android:name="com.abc.xyz.MyApplication" android:allowBackup="false"> <activity android:name=".StartupActivity" android:noHistory="true" android:label="@string/title_startup_screen" android:configChanges="orientation"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".LoginActivity" android:windowSoftInputMode="stateAlwaysVisible|adjustResize" android:label="@string/title_login_screen" android:configChanges="orientation"> </activity> //my other activity defination <!-- BroadcastReceiver that will receive intents from GCM services and handle them to the custom IntentService. The com.google.android.c2dm.permission.SEND permission is necessary so only GCM services can send data messages for the app. --> <receiver android:name="com.google.android.gcm.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <!-- Receives the actual messages. --> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <!-- Receives the registration id. --> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="com.abc.xyz.ui.activity" /> </intent-filter> </receiver> <!-- Application-specific subclass of GCMBaseIntentService that will handle received messages. By default, it must be named .GCMIntentService, unless the application uses a custom BroadcastReceiver that redefines its name. --> <service android:name="com.abc.xyz.ui.activity.GCMIntentService" /> </application> </manifest> 

    Je ne sais pas ce qui ne va pas et pourquoi onregistre () n'est jamais appelé. Toute aide serait appréciée.

  • Comment utiliser ScriptIntrinsicYuvToRGB (convertir byte yuv en octet rgba)
  • Comment inclure une mise en page deux fois dans Android?
  • Lorsque vous utilisez AlertDialog.Builder avec EditText, le Soft Keyboard ne s'affiche pas
  • Comment envelopper le texte à la ligne suivante dans un Android TextView?
  • Modifier la propriété animateLayoutChanges en utilisant le code java
  • L'activation du support SMS dans Hangouts 2.0 brise le BroadcastReceiver de SMS_RECEIVED dans mon application
  • 2 Solutions collect form web for “OnRegistered () de GCMIntentService jamais appelé”

    Je réponds parce que le code collant est à peine lisible dans les commentaires:

    J'ai manqué quelques journaux de votre logat qui suggèrent que votre service soit même appelé. Je l'ai dans mon Logcat lors de l'inscription:

     GCMBroadcastReceiver V onReceive: com.google.android.c2dm.intent.REGISTRATION GCMBroadcastReceiver V GCM IntentService class: com.package.android.app.GCMIntentService GCMBaseIntentService V Acquiring wakelock GCMBaseIntentService V Intent service name: GCMIntentService-DynamicSenderIds-1 

    Surtout la dernière ligne manque ou vous avez oublié de la coller. Pourriez-vous vous assurer que vous avez publié le LogCat complet? Filtrez pour GCM pour vous assurer que vous n'avez pas manqué quelque chose.

    Mettre à jour

    Comme l'OP mentionné dans les commentaires, il a utilisé le service pour en faire plus. En quelque sorte, cela a entravé la fonctionnalité GCM et après avoir séparé cela en deux services, il a fonctionné. Leçons apprises: n'utilisez pas GCMIntentService pour autre chose que GCM.

    J'ai compris dans un autre poste quel est le problème. Ma classe GCMIntentService a été définie dans mon manifeste comme

     <service android:name="MY_PACKAGE.gcm.GCMIntentService" /> 

    Parce que je ne voulais pas mettre cette classe dans le paquet racine, je mets à MY_PACKAGE.gcm ". Cela semble causer un problème et, comme le dit la documentation,

    Ajouter le service d'intention suivant

     <service android:name=".GCMIntentService" /> 

    Alors, lorsque j'ai déménagé dans le paquet racine, cela a fonctionné! Il existe une autre façon de mettre GCMIntentServiceSubclass partout où vous voulez et de le nommer différemment. Vous devriez sous-classer GCMBroadcastReceiver et faire les changements dans manifeste et dans la sous-classe comme indiqué dans cette autre publication .

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.