我正在尝试在我的应用中实现推送通知,但似乎我的C2DMReceiver无法正常工作。我尝试了所有可以找到的解决方案。这就是我所拥有的:
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="10" />
<permission android:name="com.my.app.permission.C2D_MESSAGE" android:protectionLevel="signature"/>
<uses-permission android:name="com.my.app.permission.C2D_MESSAGE"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<activity>....</activity>
<service android:name=".C2DMReceiver"/>
<receiver
android:name="com.google.android.c2dm.C2DMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
<category android:name="com.my.app"/>
</intent-filter>
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
<category android:name="com.my.app"/>
</intent-filter>
</receiver>
在我的onCreate方法中,我使用: C2DMessaging.register(this,“mymail@gmail.com”);
String id = C2DMessaging.getRegistrationId(this);
id始终为空。 看看LogCat,我可以看到权限拒绝:接收Intent {act = com.google.android.c2dm.intent.REGISTRATION 那么,我该怎么办?谢谢)
答案 0 :(得分:1)
将android:name
代码中的receiver
从com.google.android.c2dm.C2DMBroadcastReceiver
更改为com.my.app.YourReceiverClassName
,并确保您的发件人电子邮件和服务器端登录电子邮件相同。
答案 1 :(得分:1)
接收方中的android:name
必须指定实现接收方的类的路径。我确信您的C2DMBroadcastReceiver
课程不在com.google.android.c2dm
包中,因为我在下面看到您正在使用com.my.app
包。
在com.my.app.receiver
中创建一个C2DMBroadcastReceiver类,并将接收者的adroid:name
指定为:
<receiver
android:name="com.my.app.receiver.C2DMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
......
</receiver>