我正在尝试开发一个可以从 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 权限,尽管清单中已经提供了它。
有谁知道我该如何解决这个问题?
谢谢。