权限拒绝:接收Intent {act = com.google.android.c2dm.intent.REGISTRATION

时间:2012-04-26 14:11:44

标签: android push android-c2dm

我正在尝试在我的应用中实现推送通知,但似乎我的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 那么,我该怎么办?谢谢)

2 个答案:

答案 0 :(得分:1)

android:name代码中的receivercom.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>