我的清单权限低于代码
<permission
android:name="com.xyz.xyz.permission.C2D_MESSAGE"
android:protectionLevel="signature"/>
<uses-permission
android:name="com.google.android.c2dm.permission.RECEIVE"/>
这是崩溃
由java.lang.SecurityException引起:未经com8.google许可,不允许启动服务Intent {act = com.google.android.c2dm.intent.REGISTER pkg = com.google.android.gms(has extras)} .android.c2dm.permission.RECEIVE 在android.app.ContextImpl.startServiceCommon(ContextImpl.java:1794) 在android.app.ContextImpl.startService(ContextImpl.java:1771) 在android.content.ContextWrapper.startService(ContextWrapper.java:521) 在com.google.android.gms.iid.zzc.zzb(未知来源) 在com.google.android.gms.iid.zzc.zza(未知来源) 在com.google.android.gms.iid.zzc.zzb(未知来源) 在com.google.android.gms.iid.zzc.zza(未知来源) 在com.google.android.gms.iid.InstanceID.zzc(未知来源) 在com.google.android.gms.iid.InstanceID.getToken(未知来源) 在android.os.AsyncTask $ 2.call(AsyncTask.java:292) 在java.util.concurrent.FutureTask.run(FutureTask.java:237) 在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:587) 在java.lang.Thread.run(Thread.java:818)
答案 0 :(得分:0)
您是否关注过官方tutorial? 除了你的接收者(你的引用部分中没有明确说明)你需要授予SDK接收者的权限,即
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="<your-package-name>" />
</intent-filter>
</receiver>
答案 1 :(得分:0)
在AndroidManifest.xml中试试这个
<uses-permission android:name="android.permission.INTERNET" />
<!-- Required to wakeup the device and deliver messages -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<permission android:name="your_package.permission.C2D_MESSAGE"
android:protectionLevel="signature"/>
<uses-permission android:name="your_package.permission.C2D_MESSAGE"/>