问题
I've an Android app built with trigger.io, using Parse push notifications. App is deployed to google play and push notifications have been working fine. Recently re-built and deployed to google play a new version of the app, with Forge platform version 1.4.29.
Since then I have been receiving the following crash reports through Google Play:
java.lang.RuntimeException: Unable to start receiver com.parse.ParseBroadcastReceiver: android.content.ReceiverCallNotAllowedException: IntentReceiver components are not allowed to register to receive intents
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2236)
at android.app.ActivityThread.access$1500(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1271)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.content.ReceiverCallNotAllowedException: IntentReceiver components are not allowed to register to receive intents
at android.app.ReceiverRestrictedContext.registerReceiver(ContextImpl.java:125)
at android.app.ReceiverRestrictedContext.registerReceiver(ContextImpl.java:119)
at com.parse.ParseCommandCache.<init>(ParseCommandCache.java:132)
at com.parse.Parse.getCommandCache(Parse.java:450)
at com.parse.ParseObject.saveEventually(ParseObject.java:1022)
at com.parse.ParseInstallation.saveEventually(ParseInstallation.java:170)
at com.parse.ParsePushRouter.saveEventually(ParsePushRouter.java:92)
at com.parse.ParsePushRouter.ensureStateIsLoaded(ParsePushRouter.java:208)
at com.parse.ParsePushRouter.hasRoutes(ParsePushRouter.java:122)
at com.parse.PushService.startServiceIfRequired(PushService.java:129)
at com.parse.ParseBroadcastReceiver.onReceive(ParseBroadcastReceiver.java:19)
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2229)
... 10 more
I have tested the app thoroughly on the following Android handsets and not been able to replicate the bug myself.
- Samsung Galaxy Nexus
- Samsung Galaxy S2
- Samsung Galaxy S
Can someone suggest what is going wrong here and how I can fix it with Trigger.io?
回答1:
This issue was fixed in Forge v1.4.37, which included an update to the Parse Android SDK v1.2.3.
- Trigger.io release ntes
- Bug report on Parse Q&A
回答2:
Recently I had this problem and nothing to do with Parse version. Issue was the initializing of Parse was done on Activity instead of Application. The Broadcast Receiver can start before the Activity and writing a custom Application class and initializing Parse in onCreate of that helps.
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
//Initialize Parse here
}
}
<application
android:name=".MyApplication"
...>
.
.
.
</application>
回答3:
This problem is resolved in Forge v1.4.32: http://docs.trigger.io/en/v1.4/release-notes.html#v1-4-32
来源:https://stackoverflow.com/questions/14811733/unable-to-start-receiver-com-parse-parsebroadcastreceiver-on-trigger-io-android