Il modello di sicurezza per Android è che tutte le risorse protette (Identità, Contatti, Fotocamera, GPS, ecc. [Elenco completo delle autorizzazioni che puoi richiedere qui] ) sono protetti all'interno dell'API del sistema operativo. Ciò significa che un'app non ha accesso diretto all'hardware, ma deve chiedere al sistema operativo di parlarne con l'hardware. In questo modo, il sistema operativo ha la possibilità di controllare le autorizzazioni dell'app e rifiutare di fornire i dati.
Un esempio:
Diciamo che scrivo un'app che vuole accedere alla posizione GPS, devo fare due cose:
-
Al momento dell'installazione, richiedi le autorizzazioni appropriate nel file manifest manifest.xml
:
<manifest ... >
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
...
</manifest>
-
In fase di esecuzione, chiedi al sistema operativo di darmi la posizione GPS:
String locationProvider = LocationManager.GPS_PROVIDER;
Location lastKnownLocation = locationManager.getLastKnownLocation(locationProvider);
Durante quella chiamata a .getLastKnownLocation(...)
il sistema operativo controllerà che la mia app abbia l'autorizzazione ACCESS_FINE_LOCATION
. Se lo fa, allora mi restituirà i dati sulla posizione, in caso contrario verrà lanciato un java.lang.SecurityException
e rifiuta di fornirmi dati.