Androidアプリは端末が起動した際に、アプリのアイコンをタップしなくても自動でアプリを起動するようにすることが出来ます。
①BroadcastReceiverを継承したクラスを作成する
1 2 3 4 5 6 7 8 9 |
class StartupReceiver : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { // 端末起動時にMainActivityを起動 Intent(context, MainActivity::class.java).apply { flags = Intent.FLAG_ACTIVITY_NEW_TASK context?.startActivity(this) } } } |
Broadcasts overview | Android Developers
アプリ起動時にonReceive()メソッドが実行されるので、ここにアプリ起動時に行いたいことを書きます。
例ではMainActivityを起動するようにしています。
②AndroidManifestにパーミッションのリクエストを追加
1 |
<uses-permission android:name="android.permission.ACTION_BOOT_COMPLETED"/> |
「RECEIVE_BOOT_COMPLETED」を許可することで、端末のシステム起動後にBroadcastReceiverを受信できるようになります。
③AndroidManifestにreceiverを設定
1 2 3 4 5 6 7 8 9 10 |
<receiver android:name=".StartupReceiver" android:enabled="true" android:exported="false" android:process=""> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> |
「android.intent.action.BOOT_COMPLETED」というブロードキャストインテントを受け取るようにします。
これで端末を再起動するとアプリも自動で起動するようになります。