1

我正在尝试开发一个可以从 GCM 接收推送通知的应用程序。我在我的 Android 清单中授予了以下权限:

 <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<permission android:name="com.example.notifications.permission.C2D_MESSAGE" android:protectionLevel="signature"></permission>
<uses-permission android:name="com.example.notifications.persmission.C2D_MESSAGE"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>

我还在 Manifest 中定义了以下 BroadcastReceiver:

<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.example.notifications" />
        </intent-filter>
    </receiver>

我还用必要的方法覆盖实现了 GCMIntentService,包括 onRegistered 方法。

但是,当调用 GCMRegistrar.getRegistrationId 方法时,我在 Logcat 中收到以下错误:

05-31 15:13:19.359: W/ActivityManager(62): Permission Denial: receiving Intent { act=com.google.android.c2dm.intent.REGISTRATION cat=[com.example.notifications] (has extras) } to com.example.notifications requires com.example.notifications.permission.C2D_MESSAGE due to sender com.google.android.gsf (uid 10013)

似乎是说该应用程序需要 com.example.notifications.permission.C2D_MESSAGE 权限,尽管清单中已经提供了它。

有谁知道我该如何解决这个问题?

谢谢。

4

2 回答 2

2

你有一个错字:

persmission.C2D_MESSAGE

应该:

permission.C2D_MESSAGE
于 2013-05-31T13:51:26.380 回答
2

替换此行

<uses-permission android:name="com.example.notifications.permission.C2D_MESSAGE" />

和。

<uses-permission android:name="com.example.notifications.persmission.C2D_MESSAGE"/>

问题是

permission.C2D_MESSAGE 

这里给出了官方的 gcm 教程,请仔细阅读以避免将来出现问题 http://developer.android.com/google/gcm/gs.html

于 2013-06-03T05:16:20.120 回答