Newer
Older
CosmosClient / app / src / main / java / com / example / cosmosclient / services / CosmosBootReceiver.java
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();
    }
}