Служба Foreground не запускается из BroadcastReceiver после загрузки - PullRequest
0 голосов
/ 29 января 2020

Я хочу запустить службу переднего плана. Когда я запускаю Сервис из своей деятельности, все работает нормально. Но когда я запускаю службу через BroadcastReceiver при загрузке / запуске, служба никогда не запускается (возможно, она работает и сразу уничтожается. В любом случае, я не вижу значок уведомления)

В моем телефоне android 10, minSdkVersion 26, compileSdkVersion 29.

Это мой манифест:

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

<application...>

    <service android:name="de.ggg.location.PositionIntervallService"
        android:enabled="true"></service>

    <receiver android:name="de.ggg.location.StartupRecevier">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>
</application>

StartupRecevier:

public class StartupRecevier extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent arg) {
        Intent intent = new Intent(context, PositionIntervallService.class);
        if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                context.startForegroundService(intent);
            } else {
                context.startService(intent);
            }
        }
    }
}

PositionIntervallService:

public class PositionIntervallService extends Service {
     @Override
     public void onCreate() {
       startForeground(FOREGROUND_ID, buildForegroundNotification(chan));

       // important work here
     }
}

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 29 января 2020

Вы можете заменить:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    context.startForegroundService(intent);
} else {
    context.startService(intent);
}

на:

ContextCompat.startForegroundService(context, intent);

Это должно работать.

0 голосов
/ 29 января 2020
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...