Normalmente, para permitir que una aplicación lea los datos del usuario añadimos algunas líneas al manifiesto de Android indicando un permiso específico para esa aplicación. Sin embargo, Android no tiene ningún tipo de control sobre los datos en bruto que una aplicación puede leer. Por ejemplo, si una aplicación tiene permiso para leer los registros de llamadas del usuario, podrá acceder a toda la información en bruto de los registros de llamadas sin ningún tipo de restricción. Además, ocurre exactamente lo mismo cuando una aplicación intenta leer los contactos. Puede leer todas las entradas sin ninguna restricción sobre los datos en bruto. El hecho de que las aplicaciones no tengan ninguna restricción sobre la información en bruto del usuario una vez que tienen acceso realmente me preocupa. Sería más deseable que, por ejemplo, una app social sólo tuviera acceso al correo electrónico de tus contactos y no a los números de teléfono, las direcciones o los números de la oficina telefónica.
Estoy tratando de construir una aplicación que pueda restringir el acceso a la información en bruto de una manera fina. Es decir, una aplicación que pueda restringir el acceso en función de las preferencias del usuario, de manera que dos aplicaciones diferentes que, por ejemplo, tengan permiso para acceder a los registros de llamadas puedan ver diferentes versiones procesadas del mismo registro de llamadas. Una podría ver sólo las llamadas realizadas durante un día concreto y la otra sólo las del último mes. La idea también podría aplicarse a los contactos, de modo que no se revelara información sensible del usuario.
He investigado mucho sobre el tema pero no he encontrado ninguna respuesta. De todas las fuentes que he leído, supongo que esto no se puede hacer (todavía). Sin embargo, si alguien pudiera arrojar luz sobre cómo implementar esto, estaría muy agradecido. ¿Sería posible restringir el acceso a los datos sin procesar de forma precisa?