package com.example.cosmosclient.services; import android.Manifest; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Build; import android.support.annotation.RequiresApi; import android.support.v4.content.ContextCompat; import android.util.Log; public class CosmosBootReceiver extends BroadcastReceiver { private static final int REQUEST_MULTI_PERMISSIONS = 101; private String TAG = CosmosBootReceiver.class.getSimpleName(); @Override public void onReceive(Context context, Intent intent) { Log.d(TAG, "onReceive"); // Android 6, API 23以上でペーミッションの確認 if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction()) && Build.VERSION.SDK_INT >= 23) { checkMultiPermissions(context); } else{ // サービスの起動 startService(context); } } // 位置情報許可の確認、外部ストレージのPermissionにも対応できるようにしておく private void checkMultiPermissions(Context context){ // 位置情報の Permission int permissionLocation = ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION); // 位置情報の Permission が許可されているか確認 if (permissionLocation == PackageManager.PERMISSION_GRANTED) { // 許可済 startService(context); } else{ // 未許可 } } //serviceをスタートさせる private void startService(final Context context) { final Thread thread = new Thread() { @RequiresApi(api = Build.VERSION_CODES.O) public void run() { // サービスの起動 Intent intentservice = new Intent(context, CosmosBackgroundService.class); context.startForegroundService(intentservice); } }; thread.start(); } }