Starting FGS without a type ... targetSDK=34 – B4X MissingForegroundServiceTypeException

MissingForegroundServiceTypeException

L'eccezione compare quando un servizio B4A viene avviato come foreground service con targetSdkVersion 34 senza dichiarare il tipo di servizio e il permesso Android coerente. Per un servizio di localizzazione occorre dichiarare esplicitamente il tipo location e il relativo permesso.

Cosa significa questo errore?

L'eccezione compare quando un servizio B4A viene avviato come foreground service con targetSdkVersion 34 senza dichiarare il tipo di servizio e il permesso Android coerente. Per un servizio di localizzazione occorre dichiarare esplicitamente il tipo location e il relativo permesso.

Messaggio originale

Starting FGS without a type ... targetSDK=34

Contesto e parole chiave

Alias

  • foreground service type
  • targetSdkVersion 34

Messaggi alternativi

  • MissingForegroundServiceTypeException durante l'avvio del servizio in foreground

Prodotti

  • Android SDK
  • B4A

Piattaforme

  • Android 14

Parole chiave

  • b4a missingforegroundservicetypeexception
  • foreground service type location b4a
  • targetSdkVersion 34 b4a

Cause possibili

Tipo di foreground service non dichiarato

Con Android 14 e target SDK 34 il sistema richiede che ogni foreground service dichiari un tipo compatibile con il lavoro svolto e il permesso specifico previsto per quel tipo. L'avvio di un servizio di localizzazione senza queste dichiarazioni produce l'eccezione.

molto comune

Diagnosi

Target SDK, servizio che esegue StartForeground e permessi del progetto

Confrontare il targetSdkVersion con il logcat e verificare che il modulo servizio abbia un tipo foreground coerente con l'uso della posizione.

Come leggere il risultato. Se il target è 34 e il servizio location non ha tipo e permesso dedicati, la causa è confermata.

B4A IDE
Verificare targetSdkVersion, SetServiceAttribute e AddPermission nel progetto

Risoluzione

Dichiarare il tipo location e il permesso del foreground service

Difficoltà: facileRischio: basso

Aggiungere le dichiarazioni nel progetto B4A, mantenendo il tipo allineato all'operazione realmente eseguita dal servizio.

  1. Individuare il servizio che usa la posizione e che viene portato in foreground.
  2. Nel progetto aggiungere il tipo foreground location e il permesso FOREGROUND_SERVICE_LOCATION.
  3. Ricompilare e provare l'avvio del servizio su Android 14 o successivo con i permessi di localizzazione richiesti.
B4A
SetServiceAttribute(Tracker, android:foregroundServiceType, "location")
B4A
AddPermission(android.permission.FOREGROUND_SERVICE_LOCATION)

Domande frequenti

Perché il servizio B4A fallisce solo con targetSdkVersion 34?

Android 14 applica il controllo sul tipo di foreground service e sul permesso specifico. Il servizio deve dichiarare entrambe le informazioni prima dell'avvio.

Approfondimenti

Schede correlate