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点を追記すると、以前と同様に動くようになった。
コメント
コメントを投稿