Italian Permessi negati Android 7

luciano deri

Active Member
Licensed User
Longtime User
Salve a Tutti. Ho ricevuto un paio di segnalazioni di errori sulle nuove installazioni su Android 7. Non ho un dispositivo A7 con cui provare, a occhio sembra che gli utenti neghino la richiesta dei permessi durante il download da GooglePlay, ma mi pare strano. In allegato il messaggio di errore che mi hanno segnalato. Nel manifest ho messo questa istruzione, e fino ad oggi non ho avuto problemi.
AddPermission(android.permission.READ_PHONE_STATE)
Qualche suggerimento?
Grazie.
 

Attachments

  • Screenshot_20170703-084118.png
    Screenshot_20170703-084118.png
    56.7 KB · Views: 234

sirjo66

Well-Known Member
Licensed User
Longtime User
cosa ti serve fare il getdeviceid() ?
puoi identificare il device in altro modo ?
io ad esempio per identificare un dispositivo utilizzo il suo MAC
 

LucaMs

Expert
Licensed User
Longtime User
a occhio sembra che gli utenti neghino la richiesta dei permessi durante il download da GooglePlay
Se negano il permesso durante l'installazione, questa non prosegue, quindi non può essere questo.
Vista la tua frase qui sopra, suppongo che tu non stia usando i permessi a runtime.

In quel tutorial, Erel dice che se imposti l'SDK target (file Manifest) ad una versione inferiore alla 23, i vari permessi saranno chiesti agli utenti durante l'installazione anche su dispositivi con Android 6.0 o successivi.

Se invece ti serve impostare il target a 23 o superiore, dovresti usare le richieste di permesso a runtime, come spiegato in quel tutorial.

------

cosa ti serve fare il getdeviceid() ?
il GetDeviceID non sempre restituisce un ID valido.

io ad esempio per identificare un dispositivo utilizzo il suo MAC
Altrettanto il MAC, che può essere modificato dall'utente.

https://www.b4x.com/android/forum/threads/android-device-unique-id-alternative-to-phoneid.14759/
 

luciano deri

Active Member
Licensed User
Longtime User
Con il metodo proposto da Erel qui
https://www.b4x.com/android/forum/threads/android-device-unique-id-alternative-to-phoneid.14759/
per adesso (300 installazioni sui più svariati tablet e telefoni) non ho avuto problemi di omonimia.
....
Ho fatto un test su un A7 effettivamente esce l'errore perchè i permessi vanno attivati a mano dopo l'installazione tramite l'apposita funzione.
Effettivamente
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23"/>
Cerco di capire come impostare i permessi da runtime...
Grazie.
Saluti.
 

MarcoRome

Expert
Licensed User
Longtime User
Con il metodo proposto da Erel qui
https://www.b4x.com/android/forum/threads/android-device-unique-id-alternative-to-phoneid.14759/
per adesso (300 installazioni sui più svariati tablet e telefoni) non ho avuto problemi di omonimia.
....
Ho fatto un test su un A7 effettivamente esce l'errore perchè i permessi vanno attivati a mano dopo l'installazione tramite l'apposita funzione.
Effettivamente
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23"/>
Cerco di capire come impostare i permessi da runtime...
Grazie.
Saluti.
Puoi compilare con android:targetSdkVersion="22"... girerà tutto senza problemi anche su droid 7 ( i permessi verranno richiesti inizialmente quando si installa l'applicazione )
 

luciano deri

Active Member
Licensed User
Longtime User
Si, ma al post 9 è scritto.
This is an Android 4.4+ (API 19+) library. You must have in your manifest file minSdkVersion = 19.
Code:
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23"/>

Potrei fare così?
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="19"/>
 

MarcoRome

Expert
Licensed User
Longtime User
Puoi fare cosi:
B4X:
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="22"/>
In questo modo ti verranno chiesti tutti i permessi in fase di installazione. Per i permessi in runtime ( grande scocciatura ) devi impostare
B4X:
android:targetSdkVersion="23"
o maggiore
Domanda: A cosa ti servono i permessi in runtime ?
 

luciano deri

Active Member
Licensed User
Longtime User
Partendo dal problema in oggetto ho modificato il codice con i permessi a runtime e ho risolto, nel senso che la app non mi scoppia in faccia in quanto read_phone_state sta in una operazione eseguita al primo avvio,ma chiede i permessi ed è una scocciatura. Nel codice ho impostato alcuni test ai permessi quando ho bisogno di altre autorizzazioni (gps ecc).
Se mettessi android:targetSdkVersion="22"/>, tutto il codice inserito per i permessi a runtime va tolto oppure lo posso tenere?
Un domani dovessi portare android:targetSdkVersion="23"/> mi trovo il lavoro già fatto.
 

MarcoRome

Expert
Licensed User
Longtime User
Partendo dal problema in oggetto ho modificato il codice con i permessi a runtime e ho risolto, nel senso che la app non mi scoppia in faccia in quanto read_phone_state sta in una operazione eseguita al primo avvio,ma chiede i permessi ed è una scocciatura. Nel codice ho impostato alcuni test ai permessi quando ho bisogno di altre autorizzazioni (gps ecc).
Se mettessi android:targetSdkVersion="22"/>, tutto il codice inserito per i permessi a runtime va tolto oppure lo posso tenere?
Un domani dovessi portare android:targetSdkVersion="23"/> mi trovo il lavoro già fatto.
Lo puoi lasciare, perchè prima di chiederti i permessi in runtime verifica se lo stesso è stato già dato. Quindi, avendoli dati tutti in fase di installazione, non verrnno più chiesti
 

luciano deri

Active Member
Licensed User
Longtime User
Il problema è che ho già pubblicato la versione con targetSdkVersion="23"/>, da cui sono scaturite le segnalazioni dell'errore. Google non mi fa pubblicare la versione targetSdkVersion="22"/>
Problema irrisolvibile?
 

MarcoRome

Expert
Licensed User
Longtime User
Il problema è che ho già pubblicato la versione con targetSdkVersion="23"/>, da cui sono scaturite le segnalazioni dell'errore. Google non mi fa pubblicare la versione targetSdkVersion="22"/>
Problema irrisolvibile?
Una volta pubblicato in questo modo... non mi sembra che tu possa cambiare.
 

luciano deri

Active Member
Licensed User
Longtime User
Una volta pubblicato in questo modo... non mi sembra che tu possa cambiare.
:eek::mad:
Però non capisco. Quale è il vantaggio/scopo di mettere un targetSdkVersion alto?
Io l'ho messo per sbaglio facendo copia incolla dall'altro forum e averlo saputo mi sarei tenuto sul 22.
Il minSdkVersion è ovvio se uso una libreria che richiede quella versione, ma il target?
 
Top