Запуск фоновой активности заблокирован, когда устройство работает под управлением Android 14Android

Форум для тех, кто программирует под Android
Ответить
Гость
 Запуск фоновой активности заблокирован, когда устройство работает под управлением Android 14

Сообщение Гость »


У меня есть приложение для Android в магазине, и оно хорошо работает на Android 13 и более ранних версиях, однако есть некоторые проблемы, связанные с Android 14. Это приложение для потоковой передачи мультимедиа с поддержкой Android Auto. В приложении есть MediaLibraryService, который запускает действие на устройстве, когда пользователь взаимодействует через библиотеку Android Auto.

Все это работало на Android 13, однако на Android 14 Android Auto просто отображается на головном устройстве с надписью «получить ваш выбор».

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

Я просмотрел документацию по Android 14 и изменил свой код следующим образом, однако в журнале по-прежнему получаю следующее:

10-13 18:26:29.705 1000 1519 5569 W ActivityTaskManager: запуск фоновой активности заблокирован [callingPackage: uk.dev.myapp; Uid вызова: 10384; приложениеSwitchState: 2; вызовUidHasAnyVisibleWindow: ложь; вызовUidProcState: BOUND_TOP; isCallingUidPersistentSystemProcess: ложь; balAllowedByPiSender: BackgroundStartPrivileges [allowsBackgroundActivityStars = true, разрешенийBackgroundForegroundServiceStars = true, originatingToken = null]; RealCallingPackage: uk.dev.myapp; RealCallingUid: 10384; RealCallingUidHasAnyVisibleWindow: ложь; RealCallingUidProcState: BOUND_TOP; isRealCallingUidPersistentSystemProcess: ложь; originatingPendingIntent: PendingIntentRecord{1f928a5 uk.dev.myapp startActivity}; backgroundStartPrivileges: BackgroundStartPrivileges [allowsBackgroundActivityStars = false, разрешенийBackgroundForegroundServiceStars = false, originatingToken = null]; Intent: Intent { act=uk.dev.myapp.TaskerIntentReceiver.PLAY_STREAM flg=0x10000000 pkg=uk.dev.myapp cmp=uk.dev.myapp/.StreamListMainActivity (есть дополнительные возможности) }; callerApp: ProcessRecord{632cf06 19377:uk.dev.myapp/u0a384}; inVisibleTask: false]

Мой код:

Намерение намерение = новое намерение (это, StreamListMainActivity.class); Intent.setAction( StreamListMainActivity.PLAY_STREAM); намерение.putExtra(StreamListMainActivity.STREAM_INDEX, Индекс); Intent.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK); Intent.setPackage( getContext().getPackageName() ); Опции ActivityOptions = ActivityOptions.makeBasic(); options.setPendingIntentBackgroundActivityStartMode( ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED); PendingIntent pendingIntent = PendingIntent.getActivity(context, 998, намерение, FLAG_IMMUTABLE, options.toBundle()); пытаться { ожидающийIntent.send(); } поймать ( PendingIntent.CanceledException e ) { AppLogger.Exception(LOG_TAG, e); } Мой сервис определен следующим образом:

Следовал инструкциям здесь:

https://developer.android.com/about/ver ... es-14#java

и ожидал, что приложение запустится, когда пользователь выберет медиафайл на головном устройстве Android Auto.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»