Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 30/05/15, 17:05:44
Avatar de Salinero27
Salinero27 Salinero27 no está en línea
Miembro del foro
Mensajes: 66
 
Fecha de registro: nov 2013
Mensajes: 66
Modelo de smartphone: Samsung Galaxy S4 I905
Versión de ROM: Osiris Team
Tu operador: Yoigo
Mencionado: 0 comentarios
Tagged: 0 hilos
App que bloquea Intents en Android

Buenas Gente.

Estoy finalizando la carrera, y como Trabajo de Fin de Grado, me han asignado el desarrollo de una app que, en el caso de que una app quiera acceder a los datos de otras app, se muestre un aviso al usuario y este decida si la app puede o no acceder a los datos de dicha aplicación.

Aunque ya he programado en anterioridad para android (apps sencillas usando shared preferences y poco más), me gustaría saber si conocéis de algún portal o manual que pueda ayudarme a obtener algo más de información sobre programación avanzada en android.

Un saludo y gracias
Responder Con Cita


  #2  
Viejo 30/05/15, 18:38:19
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
¿Para esa app en concreto o en términos generales?

Si es lo primero no es demasiado complejo, lo único que tendrías que hacer es mostrar un cuadro de diálogo antes de hacer el setContentView, y según lo que respondas hacerlo o cerrar la Activity.

Si es lo segundo, dudo que se pueda, al menos no directamente. No se si habrá algún BroadcastReceiver para cuando se ejecuta una Activity, y en ese caso poder comparar y lanzar un Service Always On Top que te muestre la ventana de aceptar o cancelar. Si aceptas cierras el Service, y si cancelas matas a la Activity con el ActivityManager. Y como he dicho, no se si se puede.
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 30/05/15, 20:00:27
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
Entiendo que hablamos de una especie de firewall de Intents pero que además pueda interceptar, preguntar y aceptar o bloquear.

Uff... Por lo que he leído, desde Android 4.2.2 hay un firewall de Intents que se configura por xml y no parece estar documentado. Serviría para bloquearlos, pero no para preguntar y dejar pasar unos si y otros no. Busca "android intent firewall"

Si hablamos de apps con permiso root ya es otra historia, y entonces seria más de hackeo del sistema operativo que también hay literatura pero nunca la he tocado.

Tu tutor del TFG podría darte alguna pista de cómose hace, porque como comenta kriogeN yo también dudo de que se pueda, al menos según lo has contado o según lo hemos entendido.

P.D.: Para interceptar únicamente puedes inspirarte en esta app https://github.com/intrications/intent-intercept

Última edición por mocelet Día 30/05/15 a las 20:03:16
Responder Con Cita
Gracias de parte de:
  #4  
Viejo 30/05/15, 21:08:05
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Cita:
Originalmente Escrito por mocelet Ver Mensaje
Entiendo que hablamos de una especie de firewall de Intents pero que además pueda interceptar, preguntar y aceptar o bloquear.

Uff... Por lo que he leído, desde Android 4.2.2 hay un firewall de Intents que se configura por xml y no parece estar documentado. Serviría para bloquearlos, pero no para preguntar y dejar pasar unos si y otros no. Busca "android intent firewall"

Si hablamos de apps con permiso root ya es otra historia, y entonces seria más de hackeo del sistema operativo que también hay literatura pero nunca la he tocado.

Tu tutor del TFG podría darte alguna pista de cómose hace, porque como comenta kriogeN yo también dudo de que se pueda, al menos según lo has contado o según lo hemos entendido.

P.D.: Para interceptar únicamente puedes inspirarte en esta app https://github.com/intrications/intent-intercept
También he visto esa app cuando estaba mirando a ver si había algo, pero por lo que yo he entendido lo que hace es crear un IntentFilter para reaccionar a llamadas de otras Activity. Así que tampoco valdría para lo que el quiere, porque como mucho le saldría en la pantalla "Quieres usar esta app o esta otra", y sólo valdría si usas un Intent mediante un ACTION (por ejemplo aplicaciones que puedan actuar como cámara), no para abrir una Activity en concreto.
Responder Con Cita
Gracias de parte de:
  #5  
Viejo 31/05/15, 04:12:05
Avatar de Salinero27
Salinero27 Salinero27 no está en línea
Miembro del foro
Mensajes: 66
 
Fecha de registro: nov 2013
Mensajes: 66
Modelo de smartphone: Samsung Galaxy S4 I905
Versión de ROM: Osiris Team
Tu operador: Yoigo
Mencionado: 0 comentarios
Tagged: 0 hilos
Lo primero gracias por las respuestas.

Como bien dice mocelet, sería una especie de firewall de intents. Algo que te avise en el caso de que una app (un juego por ejemplo) quiera acceder a los contactos, el imei, la ubicación o cualquier otra cosa sobre la que tenga permisos

Hablando con mi tutor si que hemos debatido sobre la posibilidad de que para llevarlo a cabo sea necesario tocar el kernel, pero no estamos seguros de si es así. En caso de que haya que tocar el kernel es bastante probable que no se realice, ya que me vendría un poco grande seguramente.
Responder Con Cita
  #6  
Viejo 31/05/15, 09:22:07
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
No es que tengas que tocar el Kernel, es que tienes que tocar el SO, y ya no hablo de modificar ficheros, hablo de recompilarlo.

Para todo lo que mencionas no necesitas hacerlo mediante Intents, precisamente hacerlo mediante Intents es para cuando NO tienes permiso.

Por ejemplo, una aplicación con permiso de cámara significa que ella misma es una cámara y puede hacer fotos en su propia interfaz (y mostrar la preview y todo eso), pero si no tiene permiso de cámara siempre puede solicitar por Intent que se abra una cámara y cuando esa aplicación se cierre le devuelva el resultado que es la foto, todo eso sin permisos.

O el tema de los contactos, si tengo permisos significa que puedo crear un Cursor de los contactos y manipularlo como yo quiera y mostrarlo como yo quiera. Pero si no tengo permisos puedo solicitar un Intent que me abra los contactos y el que yo seleccione me lo devuelva como resultado para usarlo en mi app, pero sólo ese.
Responder Con Cita
Gracias de parte de:
  #7  
Viejo 31/05/15, 10:21:39
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
Algo como hace iOS vaya.

Una app "normal" imposible. Necesitas que el dispositivo tenga root y, probablemente, el framework Xposed que facilita muchos de los hacks que hay. De hecho hay módulos que hacen eso como XPrivacy, algunas ROMs ya incluyen mecanismos parecidos y hasta es posible que lo veamos pronto en Android oficial.

Lo veo muy ambicioso como TFG y no veo cómo podría aportar valor añadido a lo que hay.
Responder Con Cita
Gracias de parte de:
  #8  
Viejo 01/06/15, 18:26:51
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Cita:
Originalmente Escrito por mocelet Ver Mensaje
y hasta es posible que lo veamos pronto en Android oficial
Si antes lo dices, justo hoy ha salido que Android M incluirá esa opción, aunque a medias, las apps podrán pedir permisos al usuario que no tengan durante su instalación. Si ya los tenían los seguirán teniendo y no se tendrán que pedir.
Responder Con Cita
Gracias de parte de:
  #9  
Viejo 01/06/15, 19:00:57
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
Con lo paranoico que soy ya no solo tendré que mirar los permisos al instalar sino durante la ejecución, qué pereza
Responder Con Cita
  #10  
Viejo 03/06/15, 10:38:44
Avatar de Salinero27
Salinero27 Salinero27 no está en línea
Miembro del foro
Mensajes: 66
 
Fecha de registro: nov 2013
Mensajes: 66
Modelo de smartphone: Samsung Galaxy S4 I905
Versión de ROM: Osiris Team
Tu operador: Yoigo
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por mocelet Ver Mensaje
Con lo paranoico que soy ya no solo tendré que mirar los permisos al instalar sino durante la ejecución, qué pereza
Sería lo suyo es muy facil que nos cuelen troyanos en android desde mi punto de vista.

Bueno, voy a probar de momento IntentIntercept e Intent Firewall. A ver que tal funcionan y como actuan. Es probable que sea muy ambicioso y que a lo mejor solo consiga un aviso cada vez que una app accede a ciertos datos y que no se pueda bloquear. Pero veo la app todo un reto y me ayudaría muchísimo a entender la arquitectura de android.
Responder Con Cita
  #11  
Viejo 03/06/15, 11:50:25
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
El Intent Intercept como decía kriogeN no te valdrá para nada, porque los permisos no tienen que ver nada con los intents. Y el Intent Firewall son ficheros XML con las reglas para bloquear o aceptar, no te va a avisar nadie de que una app accede a algo o no.

La única forma es interceptar las llamadas de sistema, lo más "sencillo" es con el framework Xposed que comentaba. Y siempre con permisos de root, claro.
Responder Con Cita
Gracias de parte de:
  #12  
Viejo 16/07/15, 12:06:16
Avatar de Salinero27
Salinero27 Salinero27 no está en línea
Miembro del foro
Mensajes: 66
 
Fecha de registro: nov 2013
Mensajes: 66
Modelo de smartphone: Samsung Galaxy S4 I905
Versión de ROM: Osiris Team
Tu operador: Yoigo
Mencionado: 0 comentarios
Tagged: 0 hilos
Bueno, después de darle muchas vueltas y de trastear con el Intent Firewall de Android, voy a diseñar una app que permita interactuar con el Intent Firewall de Android.

Después de mucho investigar, me he dado cuenta de que no hay manera, aún, de conocer quien es el emisor del Intent, por lo tanto bloquearlo entre apps es imposible. No obstante, si se puede bloquear el acceso a las apps que se desee.

Mi app tratará de editar un fichero en xml dentro del directorio del Intent Firewall, en ese fichero se establecen las reglas que el firewall deberá seguir. Para ello, el dispositivo móvil deberá de estar rooteado.

Sabeis donde puedo consultar el código para que mi app solicite permisos de super usuario?
Responder Con Cita
  #13  
Viejo 16/07/15, 12:07:14
Avatar de Salinero27
Salinero27 Salinero27 no está en línea
Miembro del foro
Mensajes: 66
 
Fecha de registro: nov 2013
Mensajes: 66
Modelo de smartphone: Samsung Galaxy S4 I905
Versión de ROM: Osiris Team
Tu operador: Yoigo
Mencionado: 0 comentarios
Tagged: 0 hilos
Bueno, después de darle muchas vueltas y de trastear con el Intent Firewall de Android, voy a diseñar una app que permita interactuar con el Intent Firewall de Android.

Después de mucho investigar, me he dado cuenta de que no hay manera, aún, de conocer quien es el emisor del Intent, por lo tanto bloquearlo entre apps es imposible. No obstante, si se puede bloquear el acceso a las apps que se desee.

Mi app tratará de editar un fichero en xml dentro del directorio del Intent Firewall, en ese fichero se establecen las reglas que el firewall deberá seguir. Para ello, el dispositivo móvil deberá de estar rooteado.

Sabeis donde puedo consultar el código para que mi app solicite permisos de super usuario?

Gracias por vuestras respuestas
Responder Con Cita
  #14  
Viejo 16/07/15, 12:21:51
Avatar de Salinero27
Salinero27 Salinero27 no está en línea
Miembro del foro
Mensajes: 66
 
Fecha de registro: nov 2013
Mensajes: 66
Modelo de smartphone: Samsung Galaxy S4 I905
Versión de ROM: Osiris Team
Tu operador: Yoigo
Mencionado: 0 comentarios
Tagged: 0 hilos
Bueno, después de darle muchas vueltas y de trastear con el Intent Firewall de Android, voy a diseñar una app que permita interactuar con el Intent Firewall de Android.

Después de mucho investigar, me he dado cuenta de que no hay manera, aún, de conocer quien es el emisor del Intent, por lo tanto bloquearlo entre apps es imposible. No obstante, si se puede bloquear el acceso a las apps que se desee.

Mi app tratará de editar un fichero en xml dentro del directorio del Intent Firewall, en ese fichero se establecen las reglas que el firewall deberá seguir. Para ello, el dispositivo móvil deberá de estar rooteado.

Sabeis donde puedo consultar el código para que mi app solicite permisos de super usuario?

Gracias por vuestras respuestas
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 12:20:48 (GMT +1)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007