Italian richiedere automaticamente i permessi richiesti durante installazione app

tmtube73

Member
Buongiorno a tutti,

ho notato che installando l'applicazione B4a Bridge su android, questa app chiede subito di autorizzare i permessi in android per la sovrapposizione delle app aprendo l'area opportuna di android dedicata a questo permesso, vi chiedo se siete a conoscenza di come implementare nelle app B4A la richiesta automatica dei permessi senza che l'utente debba conoscerli e quindi andare nelle aree opportune di android ad attivarli

per spiegarmi meglio in che modo potrei modificare questa riga nel file manifest per chiedere il permesso di sovrapposizione della app in primo piano durante la fase di installazione app?

B4X:
AddPermission(android.permission.SYSTEM_ALERT_WINDOW)
Grazie a tutti.
 

Sagenut

Well-Known Member
Licensed User
Last edited:

tmtube73

Member
io non intendo all'insaputa dell'utente, ma intendo che i permessi devono essere richiesti subito durante l'installazione, poi sarà l'utente che sta installando la app a cliccare consenti oppure nega, al momento la mia stringa non fa chiedere il permesso a fine installazione
 

Sagenut

Well-Known Member
Licensed User
Premesso che io non ho fatto prove con quella richiesta....
Mi pare di capire che non è un permesso che faccia apparire la richiesta di consenso dall'utente.
Hai provato a vedere cosa succede applicando l'esempio del post che ti ho linkato?
 

LucaMs

Expert
Licensed User
durante la fase di installazione app?
chiedere il permesso di sovrapposizione della app in primo piano durante la fase di installazione app?
Meglio specificare: i permessi non vengono mai richiesti durante (tantomeno prima) l'installazione di un'app ma solo al suo avvio.

Per il momento non conosco la risposta alla tua domanda, dovrei cercare. Volendo potresti guardarlo nel sorgente del B4a-Bridge, visto che è stato pubblicato:
https://www.b4x.com/android/forum/threads/b4a-bridge-source-code.8153/


P.S. Già che c'ero, avendo dovuto cercare il sorgente, l'ho fatto io. Viene fatto usando un Intent:
B4X:
Public Sub GetDrawOverPermission As ResumableSub
    Try
        Dim settings As JavaObject
        settings.InitializeStatic("android.provider.Settings")
        Dim ctxt As JavaObject
        ctxt.InitializeContext
        If settings.RunMethod("canDrawOverlays", Array(ctxt)) = True Then
            Return True
        End If
        Msgbox2Async($"The "display over other apps" permission is required on Android Q+ devices in order to allow B4A-Bridge to start other apps while in the background."$, "", "OK", "", "", Null, False)
        Wait For Msgbox_Result (Result As Int)
        Dim i As Intent
        i.Initialize("android.settings.action.MANAGE_OVERLAY_PERMISSION", "package:" & Application.PackageName)
        StartActivityForResult(i)
        Wait For ion_Event (MethodName As String, Args() As Object)
    Catch
        Log(LastException)
    End Try
    Return True
End Sub
[Di seguito le due routine usate dalla routine precedente]
B4X:
Private Sub StartActivityForResult(i As Intent)
    Dim jo As JavaObject = GetBA
    ion = jo.CreateEvent("anywheresoftware.b4a.IOnActivityResult", "ion", Null)
    jo.RunMethod("startActivityForResult", Array As Object(ion, i))
End Sub

Sub GetBA As Object
    Dim jo As JavaObject
    Dim cls As String = Me
    cls = cls.SubString("class ".Length)
    jo.InitializeStatic(cls)
    Return jo.GetField("processBA")
End Sub
 
Last edited:

tmtube73

Member
Si la mia è stata un imprecisione, intendevo appena subito dopo l'installazione quindi implicitamente intendevo al primo avvio ma ho sbagliato scrivendo durante l'installazione.

Grazie per la segnalazione del codice sorgente utile alla risoluzione del problema
 
Top