doroidpanic.com

Android Oでフォアグラウンドサービスがjava.lang.RuntimeException [Caused by: java.lang.SecurityExceptio at android.app.Service.startForeground]

Playコンソールでエラーを見つけた・・


java.lang.RuntimeException: 
  at android.app.ActivityThread.handleServiceArgs (ActivityThread.java:3698)
  at android.app.ActivityThread.access$1600 (ActivityThread.java:200)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1691)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:193)
  at android.app.ActivityThread.main (ActivityThread.java:6762)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:858)
Caused by: java.lang.SecurityException: 
  at android.os.Parcel.createException (Parcel.java:1950)
  at android.os.Parcel.readException (Parcel.java:1918)
  at android.os.Parcel.readException (Parcel.java:1868)
  at android.app.IActivityManager$Stub$Proxy.setServiceForeground (IActivityManager.java:5198)
  at android.app.Service.startForeground (Service.java:695)
  at com.doroidpanic.apps.service.xxyba.a (Xxyba.java:150)
  at com.doroidpanic.apps.service.xxyba.onStartCommand (Xxyba.java:102)
  at android.app.ActivityThread.handleServiceArgs (ActivityThread.java:3679)
Caused by: android.os.RemoteException: 
  at com.android.server.am.ActivityManagerService.enforcePermission (ActivityManagerService.java:9331)
  at com.android.server.am.ActiveServices.setServiceForegroundInnerLocked (ActiveServices.java:1193)
  at com.android.server.am.ActiveServices.setServiceForegroundLocked (ActiveServices.java:874)
  at com.android.server.am.ActivityManagerService.setServiceForeground (ActivityManagerService.java:20597)
  at android.app.IActivityManager$Stub.onTransact (IActivityManager.java:976)

ここにあった。
https://developer.android.com/about/versions/pie/android-9.0-changes-28#fg-svc

パーミッションが足りてないのか


< uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

動作の変更点: API レベル 28+ をターゲットとするアプリ
Android 9(API レベル 28)では、Android システムにさまざまな変更が加えられています。 以下の動作の変更点は、API レベル 28 以降をターゲットとするアプリのみに適用されます。 targetSdkVersion を API レベル 28 以降に設定するアプリは、必要に応じてアプリを修正してこれらの動作を適切にサポートする必要があります。
Android 9 で実行されるすべてのアプリに影響を与える変更点については、ターゲットとする API レベルに関係なく、動作の変更点: すべてのアプリをご覧ください。
フォアグラウンド サービス
Android 9 以降をターゲットにするアプリは、フォアグラウンド サービスを使用する際に FOREGROUND_SERVICE パーミッションをリクエストする必要があります。 これは Normal パーミッションなので、リクエストしたアプリに自動で付与されます。

Android 9 以降をターゲットにするアプリが FOREGROUND_SERVICE をリクエストせずに、フォアグラウンド サービスの作成を試みると、システムにより、SecurityException がスローされます。