Android 9 Pie 時代のフォアグラウンドサービス
Android 9 Pie(API レベル 28)が正式にリリースされ、会社でも Android 9 対応のアプリをリリースしました。
動作の変更点を見る限り、多くのアプリは targetSdkVersion 28
に数字を上げるだけで問題なさそうですが、会社で開発しているアプリは、フォアグラウンドサービスを利用しており、追加の対応が必要でした。
フォアグラウンドサービス対応
まずは、Android 8 Oreo では、フォアグラウンドサービスの起動に制約が加わりました。まだ Android Oreo に対応していない場合は、この記事に書いたように、下記の対応も必要となります。
- Service の起動には
Context.startForegroundService()
を使用する - 起動後、5 秒以内に
Service.startForeground()
を呼ぶ
Android 8 の対応が終わっていれば、Android 9 では Manifest ファイルに FOREGROUND_SERVICE
パーミッションを追加するだけです。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="your.package.name">
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<!-- 省略 -->
</manifest>
ダイアログを利用して、ユーザーに許可を求める Dangerous permissions ではなく Normal permissions のため、アプリに自動でパーミッションが付与されます。