devo chiedere a ciascuno per l'utente con requestPermissions
?
In primo luogo quando utilizzare requestPermission?
requestPermission viene chiamato solo dopo checkSelfPermission quando questo metodo non restituisce PERMISSION_GRANTED
.
È possibile trovare uno list of permission che Android M richiede durante il runtime. Ognuna di queste autorizzazioni fa parte di un gruppo di autorizzazioni. WRITE_EXTERNAL_PERMISSION
è da android.permission-group.STORAGE
e ACCESS_COARSE_LOCATION
/ACCESS_FINE_LOCATION
sono da android.permission-group.LOCATION
.
Se l'utente consente l'accesso a un'autorizzazione, ad esempio ACCESS_COARSE_LOCATION
, allora Android concederà automaticamente l'accesso a questo gruppo di autorizzazioni -i.e. permission-group.LOCATION
-. Quindi, se in seguito lo checkSelfPermission
per ACCESS_FINE_LOCATION
, dovresti ricevere PackageManager.PERMISSION_GRANTED
.
Se si verifica un arresto anomalo dell'app, significa che si è tentato di chiamare, ad esempio LocationServices.FusedLocationApi.requestLocationUpdates
prima di richiedere all'utente la posizione del gruppo di autorizzazioni.
Edit:
Non dimenticate che è requestPermission
asincrono. Pertanto, non chiamare un metodo che richiede un'autorizzazione subito dopo requestPermission. Per chiamare un metodo che richiede un'autorizzazione, è necessario eseguire l'override di onRequestPermissionsResult che fornisce un elenco di autorizzazioni e il loro stato, concesso/rifiutato.
bella risposta, grazie! – Caipivara
È inoltre possibile controllare il video del modello Android che ha spiegato il processo https://www.youtube.com/watch?list=PLWz5rJ2EKKc-lJo_RGGXL2Psr8vVCTWjM&v=C8lUdPVSzDk – xiaomi