Как автоматически запускать автоматически без открытой настройки в Android программно - PullRequest
0 голосов
/ 28 июня 2018

Поскольку я хочу обновлять местоположение на сервере каждые две минуты, поэтому я добавил класс обслуживания в Android, при перезапуске мобильного телефона я вызываю широковещательный приемник, используя boot_completed. Но этот приемник не вызывает, даже когда мое устройство перезапускается или я открыл приложение в тот раз, и я не получил.

Поскольку функция AUTO-START отключена, поэтому она не идет. Как включить программно в Android, например, включить всплывающее окно gps так же, как это.

Код: если я даю так, он открывает разрешение на автоматическую стартовую страницу вместо того, чтобы вручную показывать, как его включить. Пожалуйста, помогите мне. Этот код каждый раз, когда приложение открывается, означает, что он появляется, хотя он и включен.

if(Build.BRAND.equalsIgnoreCase("xiaomi") ){

    Intent intent = new Intent();
    intent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"));
    startActivity(intent);


}else if(Build.BRAND.equalsIgnoreCase("Letv")){

    Intent intent = new Intent();
    intent.setComponent(new ComponentName("com.letv.android.letvsafe", "com.letv.android.letvsafe.AutobootManageActivity"));
    startActivity(intent);

}
else if(Build.BRAND.equalsIgnoreCase("Honor")){

    Intent intent = new Intent();
    intent.setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity"));
    startActivity(intent);

}

public class BootCompletedIntentReceiver extends BroadcastReceiver {
    PendingIntent pintent;
    @Override
    public void onReceive(Context context, Intent intent) {

        Toast.makeText(context, "boot"+intent.getAction(), Toast.LENGTH_SHORT).show();
        Log.i("QQ","boot"+intent.getAction());

        if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
        Intent pushIntent = new Intent(context, ForegroundLocationService.class);
            context.startService(pushIntent);

/*
            Calendar cal = Calendar.getInstance();
         intent = new Intent(context, ForegroundLocationService.class);
            pintent = PendingIntent
                    .getService(context, 0, intent, 0);
            Log.i("QQ","else--less than oreo"+pintent);

            AlarmManager alarm = (AlarmManager)context. getSystemService(Context.ALARM_SERVICE);
            // Start service every 20 seconds
            alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
                    5* 1000, pintent);*/
        }
    }
}

Manifest:

 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

 <receiver android:enabled="true"
        android:directBootAware="true"
        android:exported="true" android:name=".background_services.BootCompletedIntentReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <category android:name="android.intent.category.DEFAULT" />
            <action android:name="android.intent.action.QUICKBOOT_POWERON"/>
            <action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" />
        </intent-filter>
        <meta-data android:name="enable" android:value="true"/>
        <meta-data android:name="bootType" android:value="restart"/>
        <meta-data android:name="sendToBack" android:value="true"/>
    </receiver>

1 Ответ

0 голосов
/ 23 августа 2018

Насколько мне известно, невозможно достичь того же поведения, что и с всплывающим окном gps. Также нет способа узнать, включил ли пользователь автозапуск для вашего приложения или нет. Поэтому я думаю, что единственное, что вы можете сделать - попросить пользователя включить автозапуск для вашего приложения, как вы уже делаете. Например, спросите об этом один раз в приложениях, которые сначала открываются, а затем сохраняют значение в общих настройках, чтобы оно не появлялось при каждом запуске приложения в следующий раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...