Italian android 12 e runtimepermission

Fulvio75

Well-Known Member
Licensed User
Ciao su android 12 questo funziona?

B4X:
Dim RP As RuntimePermissions

If File.ExternalWritable = True Then
        TargetDir = RP.GetSafeDirDefaultExternal("")
    Else if File.ExternalWritable = False Then
        TargetDir = File.DirInternal
End If

File.WriteMap(TargetDir,FileName,ApplicationSettings)

non posso fare il debug sul sistema in oggetto perchè non in mio possesso ma appena parte l'app essa viene chiusa, l'unica cosa che mi viene in mente che può provocare ciò è questa

Dimenticavo nel manifest ho messo questo:

AddManifestText(<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />)
 
Last edited:

Sagenut

Expert
Licensed User
Longtime User
RP.GetSafeDirDefaultExternal("") è sempre accessibile senza bisogno di alcun permesso.
E' la directory privata della tua app alla quale solo la app stessa può accedere.
 

Fulvio75

Well-Known Member
Licensed User
RP.GetSafeDirDefaultExternal("") è sempre accessibile senza bisogno di alcun permesso.
E' la directory privata della tua app alla quale solo la app stessa può accedere.
quindi è altro che crasha l'applicazione?
Lo fa solo su android 12
 

Sagenut

Expert
Licensed User
Longtime User
Ho fatto una prova veloce e in quelle 2 posizioni si può scrivere sempre.
Senza bisogno di dichiarare nulla nel Manifest.
Che possa essere quello il problema?
Quelle sono le uniche 2 posizioni che andrebbero usate per non avere problemi.
 

Fulvio75

Well-Known Member
Licensed User
Ho fatto una prova veloce e in quelle 2 posizioni si può scrivere sempre.
Senza bisogno di dichiarare nulla nel Manifest.
Che possa essere quello il problema?
Quelle sono le uniche 2 posizioni che andrebbero usate per non avere problemi.
non capisco dove possa crashare... esiste un emulatore android 12?
 

Fulvio75

Well-Known Member
Licensed User
aspetta.... dentro nel telefono c'è un micro sd, non è che tenta di scriverci e crasha perchè il codice dice
if File.ExternalWritable = True Then
 

Sagenut

Expert
Licensed User
Longtime User
aspetta.... dentro nel telefono c'è un micro sd, non è che tenta di scriverci e crasha perchè il codice dice
if File.ExternalWritable = True Then
No perchè non punti a quella posizione.
 

Sagenut

Expert
Licensed User
Longtime User
Visto che le 2 posizioni che indichi nel tuo codice iniziale sono entrambe raggiungibili sempre, non capisco il motivo di quel blocco IF THEN
 

Fulvio75

Well-Known Member
Licensed User
Visto che le 2 posizioni che indichi nel tuo codice iniziale sono entrambe raggiungibili sempre, non capisco il motivo di quel blocco IF THEN
eccolo...
java.lang.SecurityException: Need android.permission.BLUETOOTH_CONNECT permission for AttributionSource { uid = 10242, packageName = af.software.gauges, attributionTag = null, token = android.os.BinderProxy@514bcde, next = null }: AdapterService getBondedDevices

quindi?
 

Sagenut

Expert
Licensed User
Longtime User
In quel errore il problema è un permesso per il Bluetooth.
 

Fulvio75

Well-Known Member
Licensed User
Questo bisogna chiederlo al Signor Google
Comunque va anche senza

B4X:
'solo per chiedere i permessi e abilitare il BT anche se si preme NO funziona
    If Phone.SdkVersion >= 31 Then
       
        RP.CheckAndRequest("android.permission.BLUETOOTH_SCAN")
        Wait For Activity_PermissionResult (Permission As String, BLUETOOTH_SCAN As Boolean)
       
        If BLUETOOTH_SCAN = False Then
           
        End If

        RP.CheckAndRequest("android.permission.BLUETOOTH_CONNECT")
        Wait For Activity_PermissionResult (Permission As String, BLUETOOTH_CONNECT As Boolean)
       
        If BLUETOOTH_CONNECT = False Then
           
        End If

    End If
   
    'Inizializzo BT
    BT.Initialize
 

Fulvio75

Well-Known Member
Licensed User
Altro problema... In questo telefono c'è una micro SD, se questa è installata l'applicazione parte regolarmente, se non è installata l'applicazione non si apre e va in crash, da cosa dipende?
 

Sagenut

Expert
Licensed User
Longtime User
Che io sappia, da una certa versione di Android la SD viene usata come Estensione della memoria principale.
Può darsi che l'app si sia installata sulla parte di SD.
Direi di disinstallare l'app, togliere la SD e reinstallare l'app per essere sicuri che vada sulla memoria del telefono.
Se però anche altre app sono già sulla SD potrebbe creare instabilità al telefono non inserirla più.
 

Fulvio75

Well-Known Member
Licensed User
Che io sappia, da una certa versione di Android la SD viene usata come Estensione della memoria principale.
Può darsi che l'app si sia installata sulla parte di SD.
Direi di disinstallare l'app, togliere la SD e reinstallare l'app per essere sicuri che vada sulla memoria del telefono.
Se però anche altre app sono già sulla SD potrebbe creare instabilità al telefono non inserirla più.
Fatto installata sul telefono senza sd ma crascha
 

Sagenut

Expert
Licensed User
Longtime User
Allora serve un log per capire
 
Top