GcmBroadcastReceiver méthode onReceive pas tiré sur Android 4.0.3
Je suis en train d'écrire un Android 4.0.3 programme avec GCM soutien.
L'application enregistre l'amende et l'envoi d'un message depuis le serveur semble également fonctionner (la "réussite" de Google avec un id de message), mais le onReceive
méthode sur mon BroadcastReceiver ne pas me faire virer pour une raison quelconque.
Voici le manifeste:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.jlieberman.nightwatch"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.jlieberman.nightwatch.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.jlieberman.nightwatch.NightWatch"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver
android:name=".GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.jlieberman.nightwatch" />
</intent-filter>
</receiver>
<service android:name=".GcmIntentService" />
</application>
</manifest>
Et voici le BroadcastReceiver
:
package com.jlieberman.nightwatch;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.support.v4.content.WakefulBroadcastReceiver;
public class GcmBroadcastReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//Explicitly specify that GcmIntentService will handle the intent.
ComponentName comp = new ComponentName(context.getPackageName(),
GcmIntentService.class.getName());
//Start the service, keeping the device awake while it is launching.
startWakefulService(context, (intent.setComponent(comp)));
setResultCode(Activity.RESULT_OK);
}
}
Aucune idée de ce qui est à l'origine du problème?
Merci!
une question êtes-vous à l'aide de GCMRegistrar(obsolète) ou Googlecloudmessaging?
GoogleCloudMessaging.
GoogleCloudMessaging.
OriginalL'auteur Johannes Liebermann | 2013-09-25
Vous devez vous connecter pour publier un commentaire.
Vous avez
<uses-permission android:name="com.jlieberman.nightwatch.permission.C2D_MESSAGE" />
dans votre manifeste, mais je ne vois pas où vous définissez cette autorisation.Vous devez ajouter :
<permission android:name="com.jlieberman.nightwatch.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
Vous êtes les bienvenus!
Certain temps cette erreur:android.contenu.ReceiverCallNotAllowedException: BroadcastReceiver composants ne sont pas autorisés à se lier à des services de
si vous avez la solution de cette exception s'il vous plaît suggérer
OriginalL'auteur Eran
Bon s'il vous plaît essayer cette
Et pour le wakelocker j'ai écrit une classe, c'est ici,
Essayer cela et si cela ne fonctionne pas je serais là pour vous aider!!!!
s'il vous plaît essayez d'ajouter ce dans le manifeste <permission android:name="com.android.pushnotifications.la permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.android.pushnotifications.la permission.C2D_MESSAGE" />
avez-vous créer un gestionnaire de messages dans votre classe principale?
Ajoutez cette ligne dans votre activité principale classe::::: """"finale privée MyBroadcastReceiver mHandleMessageReceiver = new MyBroadcastReceiver();""""
Ajout <permission android:name="com.jlieberman.nightwatch.la permission.C2D_MESSAGE" /> a fait le tour. Merci beaucoup!
OriginalL'auteur Vardhan D G
J'ai eu le même problème récemment, et a découvert que c'est un nom de package d'erreur dans les autorisations. besoin de suivre ce guide exactement, avec le nom de votre paquet principal, que l'exemple de google se prête à Confucianisme.
Ajouter les éléments suivants à votre demande de manifeste:
Et Dans le nom du filtre:
OriginalL'auteur Oscar Calderon