El modelo de seguridad para Android es que todos los recursos protegidos (Identidad, Contactos, Cámara, GPS, etc., [Lista completa de permisos que puede solicitar aquí] ) están protegidos dentro de la API del sistema operativo. Eso significa que una aplicación no tiene acceso directo al hardware, sino que tiene que pedirle al sistema operativo que se comunique con el hardware para ello. De esa manera, el sistema operativo tiene la oportunidad de verificar los permisos de la aplicación y negarse a proporcionar los datos.
Un ejemplo:
Supongamos que escribo una aplicación que desea acceder a la ubicación GPS, tengo que hacer dos cosas:
-
En el momento de la instalación, solicite los permisos apropiados en el archivo de manifiesto manifest.xml
:
<manifest ... >
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
...
</manifest>
-
En el tiempo de ejecución, pida al sistema operativo que me proporcione la ubicación del GPS:
String locationProvider = LocationManager.GPS_PROVIDER;
Location lastKnownLocation = locationManager.getLastKnownLocation(locationProvider);
Durante esa llamada a .getLastKnownLocation(...)
, el sistema operativo verificará que mi aplicación tenga el permiso ACCESS_FINE_LOCATION
. Si lo hace, entonces me devolverá los datos de ubicación, si no, arrojará una java.lang.SecurityException
y se niegan a darme cualquier información.