Запустите приложение из сервиса в BackGround в oreo и новее - PullRequest
0 голосов
/ 15 января 2020

моя цель - показать активность в любом месте (даже на экране блокировки) в указанное c время.

я мог в предыдущих android версиях, пока Oreo не сделал эту работу , но после того, как Oreo Google изменил методы, «если вы хотите отобразить представление на lockScreen, используйте« Activity.this.setShowWhenLocked (true); »: Google говорит. тогда я должен создать действие и использовать только службу не достаточно.

Мое решение : я использую AlarmManger для запуска службы в фоновом режиме в указанное c время, когда эта служба запускает мою деятельность (моя цель).

Проблема : в предыдущих версиях android до Oreo у меня не было проблем. Приложение работает нормально. Даже в это время я закрываю свое приложение из недавнего приложения или телефон заблокирован. Но в Oreo и новее, когда приложение работает, когда он находится на переднем плане.

точка : в своих намерениях я использую этот флаг: FLAG_ACTIVITY_NEW_TASK

вопрос : как запустить c активность фоновой службы, даже если приложение закрыто или телефон заблокирован, * 10 22 * в Oreo и более новой версии ?

Ответы [ 3 ]

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

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

Я настоятельно рекомендую вам go для рабочий менеджер для выполнения фоновой задачи. Здесь есть блестящая кодовая метка:

https://codelabs.developers.google.com/codelabs/android-workmanager/#0

и прочитайте документы здесь:

https://developer.android.com/topic/libraries/architecture/workmanager

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

кроме того, что я делал раньше, я понял, что MIUI в Xiaomi не позволяет отображать всплывающее окно, которое появляется из groun d, тогда я получил его разрешение и решил проблему, теперь я могу видеть мой взгляд где угодно Вот краткое описание для тех, кому это нужно:

Permissins :

1.Оверлейное окно

2. Всплывающее окно из фона (в Xiaomi и, вероятно, другой китайский телефонный интерфейс)

Уровни :

  1. установите alarm из Activity с Calendar & PendingIntent в AlarmManger, чтобы запустить мой Service в указанное c время

  2. , когда я вычислил свои значения в Service, затем Intent до ActivityViewer, на этом шаге я добавляю FLAG_ACTIVITY_NEW_TASK к своему намерению (согласно документам Google в android Pie вы должны добавить этот флаг к своему намерению для этого использования).

  3. В моем ActivityViewer в соответствии с Google Docs, я использую Activity.setWhenLock() метод, чтобы показать мой вид даже на экране блокировки, и использую TYPE_APPLICATION_OVERLAY для Oreo и новее, и TYPE_TOAST для версии 6 до Oreo, и TYPE_SYSTEM_ERROR для до 6, в setLayoutParams для setType.

Я использую этот код для получения всплывающего окна из фона permissin в Xiaomi:

Intent intent = new Intent("miui.intent.action.APP_PERM_EDITOR");
        intent.setClassName("com.miui.securitycenter",
                "com.miui.permcenter.permissions.PermissionsEditorActivity");
        intent.putExtra("extra_pkgname", getPackageName());
        startActivity(intent);
0 голосов
/ 15 января 2020

Вы не можете достичь этого желаемого результата, используя фоновый сервис, вместо этого вы должны рассмотреть Foreground service для этой задачи. Здесь вы можете найти более подробную информацию о Foreground Services в Android. ссылка на документацию

Надеюсь, это поможет вам.

...