pin - Android Map V2: por qué el permiso MAPS_RECEIVE
meta data android name com google android maps v2 api_key (4)
Considera esto como una pregunta wiki.
Mientras configuro mi proyecto para admitir Map V2, ha habido un paso para agregar el permiso MAPS_RECEIVE.
<permission
android:name="com.example.mapdemo.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE"/>
¿Por qué creamos y consumimos el permiso de la propia aplicación?
¿Es esa aplicación de servicios de Google Play interactuar con este permiso?
¿Este permiso no puede hacerse cargo de estas cosas?
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
Pensé que el uso del permiso personalizado es permitir que otras aplicaciones inicien / utilicen los servicios / recursos de nuestra aplicación.
Descubrí que este permiso todavía es necesario cuando se utiliza el certificado de depuración. Cuando exporté y firmé mi solicitud, funcionó bien, pero no funcionó cuando usé el certificado de depuración. Tengo el MD5 para mi certificado de depuración y el certificado de aplicación asociado con la misma clave. Cuando finalmente agregué estos permisos adicionales, funcionó. Estoy usando un Moto X con 4.4 todo actualizado.
Este es el mismo patrón que ve cuando usa Google Cloud Messaging (GCM) con su permiso C2D_MESSAGE
. La idea es proteger un punto final en su aplicación (por ejemplo, un receptor de difusión) para que algún otro componente (probablemente parte de la API de Maps) pueda contactarlo de manera segura (de lo contrario, otra aplicación podría hacerse pasar por su aplicación utilizando el mismo filtro de intento).
En este caso, entonces, la API de Google Maps establece internamente dicho punto final (de manera transparente para usted) y puede, con el uso de este permiso, que este punto final no pueda ser suplantado (ya que hacerlo requeriría el permiso, que está protegido por su firma de la aplicación).
Este permiso especifica su nombre de paquete. es decir
<permission
android:name="package_name.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="package_name.permission.MAPS_RECEIVE"/>
por lo tanto, la API de Google simplemente permite que su proyecto reciba el mapa. El permiso dice dónde usar la API.
Para futuros visitantes:
Este permiso ahora es completamente innecesario. La última actualización de Google Play Services 3.1.59 lo hizo inútil. Como resultado, puede ser eliminado.