Tengo una aplicación de Android en la que defino varias actividades diferentes en el manifiesto. Algunas de estas actividades tienen filtros de intención que utilizo (como ACTION_PICK). Estas actividades, debido a los filtros de intención, aparecen cuando otras aplicaciones solicitan una actividad para manejar un ACTION_PICK. ¿Hay alguna manera de evitar esto, para que mis actividades no sean accesibles para otras aplicaciones? Ya he intentado configurar android: exported = "false" en mi actividad, pero eso no hizo nada.Cómo impido que otras aplicaciones de Android accedan a mis actividades
Respuesta
es necesario:
* definir un permiso (que sólo está disponible para las aplicaciones que tienen su firma)
* definir que la aplicación utiliza su permiso definido
* exigir que el permiso para que las actividades que desea proteger. (Tenga cuidado de no requerirlo para su actividad principal de lanzamiento).
<!-- define a permission -->
<permission
android:protectionLevel="signature"
android:name="com.mypackage.MYPERMISSION"/>
<uses-permission android:name="com.mypackage.MYPERMISSION" />
<!-- define an activity which can only be started through internal code -->
<activity android:name="..."
android:permission="com.mypackage.MYPERMISSION" >
...
</activity>
Solo para completar, las etiquetas de permisos y permisos de uso van dentro de la etiqueta de manifiesto, pero fuera de la etiqueta de la aplicación, y las etiquetas de actividad van dentro de la etiqueta de la aplicación. ¿Es eso correcto? – Dominic
@Dominic - sí, así es como se ven mis manifiestos. Quizás otras posiciones también pueden funcionar pero no las he probado. – mah
Esto debe aceptarse como la respuesta correcta. – cgogolin
- 1. ¿Cómo probar automáticamente que las aplicaciones se comportan como se espera con respecto a otras actividades?
- 2. ¿Cómo impido que System.Messaging.MessageQueue ajuste mis cadenas en XML?
- 3. Android: compartir actividades/código entre diferentes aplicaciones
- 4. Android obtener PID de otras aplicaciones
- 5. Android, detectar cuando se inician otras aplicaciones
- 6. ¿Cómo hacer que mis aplicaciones sean "personalizables"?
- 7. ¿Puedo acceder a entidades de Datastore de mis otras aplicaciones de Google App Engine?
- 8. ¿Cómo puedo dar el enlace de la tienda de aplicaciones en mis aplicaciones antes de aprobar otras aplicaciones?
- 9. Cómo agregar AdSense a mis aplicaciones
- 10. actividad para enviar o redireccionar a otras actividades
- 11. ¿Cómo agrego publicidad en mis aplicaciones de Android?
- 12. Cómo evitar que otras aplicaciones definan el mismo nombre de permiso
- 13. ¿Puedo restringir que usuarios no autentificados accedan a _all_docs?
- 14. Android: ¿Cómo implementar Parcelable a mis objetos?
- 15. Cómo evitar que un dll se cargue en otras aplicaciones
- 16. ¿Cómo exportar una actividad para que otras aplicaciones puedan llamarla?
- 17. Información de Android sobre superposiciones/elementos flotantes sobre otras aplicaciones
- 18. Android PagerView entre actividades
- 19. ¿Cómo impido que System.Uri descodifique una URL?
- 20. Android - Actividades vs Vistas
- 21. Actividades de registro en aplicaciones multiproceso
- 22. ¿Es posible que dos aplicaciones en la misma cuenta heroku accedan al mismo servidor RedisToGo?
- 23. Cómo usar Boost.Interprocess para transmitir datos a otras aplicaciones?
- 24. SQL Profiler (SQL Server 2000), ¿cómo filtrar solo mis actividades?
- 25. Iniciar otras aplicaciones con Java
- 26. Demasiadas actividades en Android?
- 27. Android: inicie actividades múltiples
- 28. ¿Cómo puedo probar mis aplicaciones de iOS
- 29. ¿Cómo informo a otras aplicaciones que mi aplicación es parte del escritorio de Windows?
- 30. ¿Cómo señalo a otras aplicaciones de Cocoa que se cambiaron las preferencias?
Uy, acaba de encontrar la respuesta aquí: http://stackoverflow.com/questions/1571615/preventing-apps-from-invoking-my-activity/1571632#1571632 ¿Hay alguna manera de eliminar ¿esta pregunta? – Dominic
He votado para cerrar su pregunta como un duplicado a la que muestra como la respuesta. Sin embargo, se necesitarán 3 votos más para cerrarlo. – Squonk
En realidad, la respuesta que mah posted es mucho más conciso, así que tal vez deberíamos mantener esto abierto. – Dominic