". Вы имеете в виду в отличие от

ал об ограничениях фонового исполнения Android Oreo, и в нем четко сказано, чтоBOOT_COMPLETED трансляция не затронута, но я не могу заставить ее работать на Android Oreo.

Во-первых, я компилирую против SDK 27. Во-вторых, я объявил получателя внутри файла манифеста:

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <receiver
        android:name="helpers.StartDetectionAtBoot"
        android:label="StartDetectionAtBoot"
        android:enabled="true"
        android:exported="true">
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT"/>

            <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>

            <action android:name="android.intent.action.BOOT_COMPLETED"/>
            <action android:name="android.intent.action.QUICKBOOT_POWERON"/>
            <!--For HTC devices-->
            <action android:name="com.htc.intent.action.QUICKBOOT_POWERON"/>
            <!--For MIUI devices-->
            <action android:name="android.intent.action.REBOOT"/>
        </intent-filter>
    </receiver>

Затем есть реализация приемника, которая также может быть простой:

public class StartDetectionAtBoot extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("test", "test");

        Intent intent0 = new Intent( context, ActivityRecognitionService.class );
        PendingIntent pendingIntent = PendingIntent.getService(context, 111, intent0, PendingIntent.FLAG_UPDATE_CURRENT);
        ActivityRecognitionClient activityRecognitionClient = ActivityRecognition.getClient(context);
        activityRecognitionClient.requestActivityUpdates(5000, pendingIntent);
    }
}

onReceive метод не вызывается, и я всегда получаю ошибку logcat на устройствах / эмуляторах Android Oreo:

W / BroadcastQueue: Фоновое выполнение не разрешено: получение намерения {act = android.intent.action.BOOT_COMPLETED flg = 0x400010}

Читая другие ответы, они сказали, что были некоторые проблемы при регистрации явных намерений в манифесте, но это не такBOOT_COMPLETED один.

ниэто помогло потому что приемник вообще не вызывается.

Регистрация намерения вещания во время выполнения, заставить его работать (на эмуляторе, запуск намерения из оболочки adb), но я не уверен, что это правильный способ сделать это:

registerReceiver(new StartDetectionAtBoot(), new IntentFilter(Intent.ACTION_BOOT_COMPLETED));

Есть ли известные ошибки с этим?

Ответы на вопрос(2)

Ваш ответ на вопрос