android - 将 GCM 代码更新为 Android SDK > 26
问题描述
我正在做一个需要更新的项目,但我不太清楚我需要改变什么。我认为最好的选择是迁移到 FCM,但我的老板不同意我的看法。
我的接收器源代码:
public class GcmBroadcastReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ComponentName comp = new ComponentName(context.getPackageName(), GcmNotificationHandlerIntentService.class.getName());
startWakefulService(context, (intent.setComponent(comp)));
setResultCode(Activity.RESULT_OK);
}
}
我在 Android 8 (sdk > 26) 上遇到下一个错误。
Fatal Exception: java.lang.RuntimeException: Unable to start receiver com.mediobanapp.pushMessages.gcm.GcmBroadcastReceiver: java.lang.IllegalStateException: Not allowed to start service Intent { act=com.google.android.c2dm.intent.RECEIVE flg=0x1000010 pkg=com.medioban cmp=com.medioban/com.mediobanapp.pushMessages.gcm.GcmNotificationHandlerIntentService (has extras) }: app is in background uid UidRecord{c6926af u0a161 RCVR idle procs:1 seq(0,0,0)}
at android.app.ActivityThread.handleReceiver(ActivityThread.java:3682)
at android.app.ActivityThread.-wrap18(Unknown Source)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1969)
at android.os.Handler.dispatchMessage(Handler.java:108)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7390)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:926)
Caused by java.lang.IllegalStateException: Not allowed to start service Intent { act=com.google.android.c2dm.intent.RECEIVE flg=0x1000010 pkg=com.medioban cmp=com.medioban/com.mediobanapp.pushMessages.gcm.GcmNotificationHandlerIntentService (has extras) }: app is in background uid UidRecord{c6926af u0a161 RCVR idle procs:1 seq(0,0,0)}
at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1701)
at android.app.ContextImpl.startService(ContextImpl.java:1657)
at android.content.ContextWrapper.startService(ContextWrapper.java:644)
at android.content.ContextWrapper.startService(ContextWrapper.java:644)
at android.support.v4.content.WakefulBroadcastReceiver.startWakefulService(WakefulBroadcastReceiver.java:91)
at com.mediobanapp.pushMessages.gcm.GcmBroadcastReceiver.onReceive(GcmBroadcastReceiver.java:14)
at android.app.ActivityThread.handleReceiver(ActivityThread.java:3672)
at android.app.ActivityThread.-wrap18(Unknown Source)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1969)
at android.os.Handler.dispatchMessage(Handler.java:108)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7390)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:926)
解决方案
推荐阅读
- java - Use replaceAll() to replace all occurrences of characters in string
- java - 在 JavaFX 应用程序中保持 ServerSocket 处于活动状态
- javascript - Doc-type html/w3c 打破 css
- java - java.util.ConcurrentModificationException Error while trying to use iterator
- intellij-idea - How to change project title in IntelliJ IDEA?
- raspberry-pi3 - 我正在使用带有 PiCamera v2.1 的 Tinker Board。如何设置捕获图像的颜色格式以及如何设置曝光参数?
- javascript - How can i replace a
with a with jquery?
- java - 使用 WS-Security 签署 SAAJ SOAPMessage
- elasticsearch - 如何释放 Elasticsearch 集群中的空间
- python - create a unique set of values length L using Python