Porque si la aplicación almacena tus datos, es responsable de mantenerlos en secreto. Por ejemplo, supongamos que hay una aplicación que almacena algo que prefieres mantener en secreto, como tu colección de álbumes de Jason Donovan. Esta aplicación tendría una base de datos con la información relevante dentro, y esta base de datos es privada para la aplicación. Ninguna otra aplicación puede leerla (sin Root), y así tu vergonzoso gusto musical se mantiene en secreto.
Ahora digamos que el autor de la aplicación quiere permitir que otras aplicaciones utilicen los mismos datos. Podría ser otra aplicación del mismo autor, o podría ampliarla para permitir que otros autores accedan a los datos. De este modo, otras aplicaciones podrían añadir un widget en la pantalla de inicio con el álbum del día de Jason Donovan, o crear entradas en el calendario para el aniversario del lanzamiento de cada álbum, o importar cualquier otra cosa. Para ello, crea un proveedor de contenidos añadiéndolo a la manifiesto y la publicación de instrucciones para los desarrolladores sobre el formato de los datos y cómo acceder a ellos. El proveedor de contenidos es como un servidor: proporciona una forma de que otras aplicaciones consulten los datos de la aplicación y obtengan resultados, sin acceder directamente a la base de datos.
Si eso es todo lo que hace, entonces cualquier aplicación instalada puede acceder a los datos. Instalas una aplicación de linterna de aspecto inocuo que sólo tiene permiso para "INTERNET" y, de repente, es capaz de averiguar toda tu música vergonzosa y enviarla por correo electrónico a los estafadores con fines de chantaje. Obviamente, esto no es deseable: un desarrollador de aplicaciones que permita que esto ocurra no debería ser confiado con tus datos.
El desarrollador de la aplicación puede evitarlo creando un nuevo permiso y dándole una descripción legible para el ser humano, como por ejemplo "Lee tus álbumes favoritos de Jason Donovan". La creación del permiso no hace nada por sí misma: también tiene que cambiar el proveedor de contenidos para que cuando una aplicación lo consulte, compruebe que esa aplicación tiene el permiso antes de responder a la solicitud. Si la aplicación tiene el permiso, le da los datos que pidió; si la aplicación no lo tiene, puede optar por darle un excepción (un error que indica al programa cuál es el problema), o simplemente para no devolver ningún resultado o resultados parciales. Por ejemplo, puede indicar a la aplicación los álbumes de los Rolling Stones que no le dan vergüenza, pero no los álbumes vergonzosos de Jason Donovan.
De esta manera, la aplicación de linterna de aspecto inocuo no puede acceder a tus datos. Antes de instalar una app que quiere acceder a los datos, puedes ver "Leer tus álbumes favoritos de Jason Donovan" en la lista de permisos, y puedes abortar la instalación si no confías en el autor de la app con esa información.
El número de permisos que crea la aplicación depende del tipo de acceso que ofrece a otras aplicaciones y de lo precisos que deben ser los controles. En nuestro ejemplo, la aplicación no ofrece a otras aplicaciones la posibilidad de añadir álbumes, por lo que no es necesario un permiso de lectura y escritura. Incluso si lo hiciera, puede ser que la aplicación sólo tiene un permiso de lectura-escritura, que otras aplicaciones necesitan tener para ver la lista de álbumes o editar la lista. Esto puede ser suficiente para una aplicación simple como esta. Pero para algo como una aplicación de medios sociales, es más importante limitar la cantidad de aplicaciones que pueden enviar mensajes (o escribir contenido) en tu nombre, por lo que en ese caso se podrían utilizar dos permisos distintos. Es el autor de la aplicación quien debe decidir cuántos permisos son apropiados para la aplicación, dando a los usuarios el control sobre su privacidad sin crear combinaciones confusas y difíciles de entender.