3

を開始できません私はこの例外を取得していますアンドロイド、中FCMプッシュ通知に取り組んでいます:GcmBroadcastReceiverはIllegalStateException:サービス・インテント

GcmBroadcastReceiverはIllegalStateException:サービス・インテント

を開始するために許可されていません私はこのフォーラムで多くの質問を検索しましたが、まだそれを解決するための助けを得ていませんでした。私のログとマニフェストのパッチも下に示します。

マニフェスト:

<uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.VIBRATE" /> 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 

<receiver android:name="com.parse.GcmBroadcastReceiver" 
      android:permission="com.google.android.c2dm.permission.SEND"> 
      <intent-filter> 
       <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
       <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
       <category android:name="com.kolbeh" /> 
      </intent-filter> 
     </receiver> 
     <meta-data android:name="com.parse.push.gcm_sender_id" 
      android:value="id:85490######" /> 

     <service android:name="com.parse.PushService" /> 

     <receiver 
      android:name="dinewhere.fcm.CustomPushReceiver" 
      android:exported="false"> 
      <intent-filter> 
       <action android:name="com.parse.push.intent.RECEIVE" /> 
       <action android:name="com.parse.push.intent.OPEN" /> 
       <action android:name="com.parse.push.intent.DELETE" /> 
      </intent-filter> 
     </receiver> 

エラーログ:

10-16 16:52:19.621 25906-25906/com.kolbeh E/AndroidRuntime: FATAL EXCEPTION: main 
                  Process: com.kolbeh, PID: 25906 
                  java.lang.RuntimeException: Unable to start receiver com.parse.GcmBroadcastReceiver: java.lang.IllegalStateException: Not allowed to start service Intent { act=com.google.android.c2dm.intent.RECEIVE flg=0x1000010 pkg=com.kolbeh cmp=com.kolbeh/com.parse.PushService (has extras) }: app is in background uid UidRecord{2ac0a5c u0a888 RCVR idle procs:1 seq(0,0,0)} 
                   at android.app.ActivityThread.handleReceiver(ActivityThread.java:3259) 
                   at android.app.ActivityThread.-wrap17(Unknown Source:0) 
                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1677) 
                   at android.os.Handler.dispatchMessage(Handler.java:105) 
                   at android.os.Looper.loop(Looper.java:164) 
                   at android.app.ActivityThread.main(ActivityThread.java:6541) 
                   at java.lang.reflect.Method.invoke(Native Method) 
                   at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 
                  Caused by: java.lang.IllegalStateException: Not allowed to start service Intent { act=com.google.android.c2dm.intent.RECEIVE flg=0x1000010 pkg=com.kolbeh cmp=com.kolbeh/com.parse.PushService (has extras) }: app is in background uid UidRecord{2ac0a5c u0a888 RCVR idle procs:1 seq(0,0,0)} 
                   at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1505) 
                   at android.app.ContextImpl.startService(ContextImpl.java:1461) 
                   at android.content.ContextWrapper.startService(ContextWrapper.java:644) 
                   at android.content.ContextWrapper.startService(ContextWrapper.java:644) 
                   at com.parse.ServiceUtils.runIntentInService(ServiceUtils.java:37) 
                   at com.parse.ServiceUtils.runWakefulIntentInService(ServiceUtils.java:68) 
                   at com.parse.GcmBroadcastReceiver.onReceive(GcmBroadcastReceiver.java:21) 
                   at android.app.ActivityThread.handleReceiver(ActivityThread.java:3252) 
                   at android.app.ActivityThread.-wrap17(Unknown Source:0)  
                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1677)  
                   at android.os.Handler.dispatchMessage(Handler.java:105)  
                   at android.os.Looper.loop(Looper.java:164)  
                   at android.app.ActivityThread.main(ActivityThread.java:6541)  
                   at java.lang.reflect.Method.invoke(Native Method)  
                   at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)  
                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)  
+1

@U Khan:問題を解決しましたか? – Debugger

答えて

8

あなたは26+のtargetSdkVersionで、アンドロイド8.0以降で実行されています。 You cannot reliably call startService() from the background、例えばGCM受信機からのものである。代わりに、あなたはどちらかのはず:あなたの特定のケース、startService()が表示さを呼び出しているコードでJobIntentService

  • スイッチstartForegroundService()へと前景のサービスを使用し、または

  • スイッチパースから来ること。 Android 8.0を考慮に入れたParseクライアントのアップデートがあるかどうかを確認する必要があります。

+0

targetSdkVersionを25に変更するとこれが解決されますか?私は呼び出しメソッドを変更することはできませんが、私はSDKのターゲットを変更することができますように頼んでいます。 – clee2005

+0

@clee2005: "targetSdkVersionを25に変更するとこれが解決されますか?" - AFAIK、はい。 – CommonsWare

+0

私はこの問題があります:startService()はParseから呼び出されます。 Parseライブラリの最近のバージョンでこの問題が修正されているかどうかは知りませんか? – matdev

関連する問題