B4A
Starting FGS without a type ... targetSDK=34 – B4X 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=34Contesto 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 comuneDiagnosi
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.
Verificare targetSdkVersion, SetServiceAttribute e AddPermission nel progettoRisoluzione
Dichiarare il tipo location e il permesso del foreground service
Aggiungere le dichiarazioni nel progetto B4A, mantenendo il tipo allineato all'operazione realmente eseguita dal servizio.
- Individuare il servizio che usa la posizione e che viene portato in foreground.
- Nel progetto aggiungere il tipo foreground location e il permesso FOREGROUND_SERVICE_LOCATION.
- Ricompilare e provare l'avvio del servizio su Android 14 o successivo con i permessi di localizzazione richiesti.
SetServiceAttribute(Tracker, android:foregroundServiceType, "location")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
- Error with Service since moving to android:targetSdkVersion 34 thread_b4x_verificato