Sub activity_permissionresult was not found. – B4X Activity_PermissionResult

Activity_PermissionResult

L'errore nasce quando CheckAndRequest viene chiamato più volte senza attendere il callback Activity_PermissionResult. La richiesta dei permessi Android è asincrona: ogni chiamata deve essere seguita dal relativo Wait For prima di procedere con la successiva.

Cosa significa questo errore?

L'errore nasce quando CheckAndRequest viene chiamato più volte senza attendere il callback Activity_PermissionResult. La richiesta dei permessi Android è asincrona: ogni chiamata deve essere seguita dal relativo Wait For prima di procedere con la successiva.

Messaggio originale

Sub activity_permissionresult was not found.

Contesto e parole chiave

Alias

  • CheckAndRequest senza Wait For
  • permission result missing

Messaggi alternativi

  • Sub Activity_PermissionResult non trovata in modalità Release

Prodotti

  • B4A
  • RuntimePermissions

Piattaforme

  • Android 6.0 e successivi

Parole chiave

  • b4a activity permissionresult not found
  • b4a checkandrequest wait for
  • runtime permissions release mode b4a

Cause possibili

Richieste di permesso sovrapposte

RuntimePermissions consegna il risultato tramite Activity_PermissionResult. Avviare una seconda richiesta prima della restituzione del primo risultato lascia il flusso senza il callback atteso e può manifestarsi soprattutto nella compilazione Release.

comune

Diagnosi

Chiamate consecutive a CheckAndRequest

Cercare nel codice più richieste di permesso eseguite nello stesso flusso senza un Wait For Activity_PermissionResult tra l'una e l'altra.

Come leggere il risultato. Se la seconda richiesta parte prima del callback, la causa è il mancato coordinamento asincrono.

Risoluzione

Attendere il risultato prima della richiesta successiva

Difficoltà: facileRischio: basso

Rendere sequenziale il flusso dei permessi e usare il booleano restituito per decidere se continuare.

  1. Chiamare CheckAndRequest per un solo permesso.
  2. Attendere Activity_PermissionResult con Wait For.
  3. Richiedere il permesso successivo soltanto dopo aver gestito il risultato del precedente.
B4A
rp.CheckAndRequest(per)
B4A
Wait For Activity_PermissionResult (Permission As String, Result As Boolean)

Domande frequenti

Perché il problema può apparire solo in Release?

Debug e Release possono avere tempi diversi, ma la causa resta la stessa: una nuova richiesta parte prima che il callback asincrono precedente sia stato ricevuto.

Approfondimenti

Schede correlate