Запустите невидимую активность для получения разрешений на обслуживание - PullRequest
0 голосов
/ 16 декабря 2018

спасибо всем за чтение.Вот приложение с загрузочным приемником, поэтому оно запускается при запуске устройства Android:

public class BootReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

    Intent i1 = new Intent(context, SplashActivity.class);
    i1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    i1.putExtra("permission_for_service","");
    context.startActivity(i1);

}

SplashActivity.class реализован для получения разрешений перед запуском MainActivity.class.

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (!checkAllRequestedPermissions()) {
        ActivityCompat.requestPermissions(this, allRequestedPermissions, MY_PERMISSIONS_REQUEST);
    }
    else {
        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | IntentCompat.FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(intent);
    }
}    

private boolean checkAllRequestedPermissions() {
    for (String permission : allRequestedPermissions) {
        if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
            return false;
        }
    }
    return true;
}

ЧтоЯ пытаюсь сделать так, чтобы предотвратить запуск пользовательского интерфейса при загрузке, используя вместо этого службу:

    @Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    if (!checkAllRequestedPermissions()) {
        ActivityCompat.requestPermissions(this, allRequestedPermissions, MY_PERMISSIONS_REQUEST);
    } else {
        if (getIntent().hasExtra("permission_for_service")) {
            //service init
            if (!isServiceRunning(SchedulerService.class)) {
                startService(new Intent(this, SchedulerService.class));
            }

            finish();
        } else {
            Intent intent = new Intent(this, MainActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | IntentCompat.FLAG_ACTIVITY_CLEAR_TASK);
            startActivity(intent);
        }
    }
}

К сожалению, это вылетает на BOOT_COMPLETE.Любые идеи о том, как заставить это работать?Спасибо миллион

...