SDK34におけるForegroundServiceの問題

 これまで動いていたアプリのTargetSDKを33から34に変えたところ、ForegroundServiceを立ち上げるところでいきなりエラー。その理由と対処法がわかった。

 今回のバージョンアップで、ForegroundServiceには「サービスタイプ」を指定しなければならなくなった。

 サービスタイプとは、そのフォアグラウンドサービスが、例えばメディア再生を行うものなのか、外部との通信を行うものなのか、といった種別のこと。次を参照。

https://developer.android.com/about/versions/14/changes/fgs-types-required?hl=ja

例えば、サービスがメディア再生を行うものであった場合は、マニフェストで、

パーミッションのところに、これまでは次の1文があれば良かった。

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

今後はそれに加えて、次の文を入れる必要がある。

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

さらに、<service・・・></service>の・・・の部分に 

android:foregroundServiceType="mediaPlayback" を追記することも必要。

この2点を追記すると、以前と同様に動くようになった。



コメント

このブログの人気の投稿

目覚まし時計アプリを公開します

超初心者の機械学習入門

画面回転で苦労した話(原因はわかった)