¿Es posible tener permisos "opcionales" en Android?
¿Hay alguna forma de que una aplicación de Android declare los permisos solicitados como opcionales?
Es decir, quiero escribir una aplicación que solicite un conjunto de permisos, por ejemplo, uno de ellos es el acceso a los contactos del usuario. Ahora la aplicación puede trabajar y hacer cosas útiles sin este permiso de acceso, pero puede hacer más si se concede.
- Privilegios elevados en la aplicación para Android
- Cómo conceder el permiso de MODIFY_PHONE_STATE para las aplicaciones que se ejecutan en Gingerbread
- Permisos de Android M con notificaciones de parsemisión
- Más permisos en apk cargado que en archivo de manifiesto
- De android - CHANGE_COMPONENT_ENABLED_STATE
¿Hay una manera para y la aplicación para decir "Quiero permiso X, pero se puede rechazar en cuyo caso estoy feliz de ejecutar con funcionalidad reducida?"
- Uso de libusb en Android sin enraizamiento
- Android: Herramientas del sistema: Alertas de nivel del sistema de visualización: ¿Cómo utilizar este permiso?
- ¿Cómo podemos ejecutar un archivo de comandos shell desde mi aplicación Android?
- Obtener: No se permite iniciar el servicio Intención ... sin permiso Proceso de servicio es malo
- sin permisos para samsung galaxy 2s
- Permisos de android contra permisos de linux
- ¿cómo se comprueban los permisos de seguridad de Android en tiempo de ejecución?
- ¿Hay alguna herramienta para proteger una aplicación de malware aún más que los permisos otorgados en Android?
No lo creo, ya que los permisos se establecen en el manifiesto y se aceptan por el usuario al instalar el .apk. Usted podría construir una versión ligera de la aplicación con permisos reducidos y un conjunto limitado de funciones y ofrecerlo como una alternativa.
No está soportado y no está en desarrollo a partir de ahora. Star emite 6266 en el rastreador de errores de Android si desea verlo implementado.
Es posible conceder privilegios a una aplicación ya instalada al no solicitar los permisos en la aplicación "principal" y crear otra aplicación ("stub") usando el mismo android:sharedUserId
, que solicita las características. A continuación, puede comprobar si la aplicación stub de permiso se ha instalado comprobando si
context.checkCallingOrSelfPermission(permission) == PackageManager.PERMISSION_GRANTED
Se evalúa como true (con el contexto como un contexto válido y el permiso como una de las cadenas de permisos). Si es cierto, su aplicación de stub se ha instalado y puede desbloquear funciones que requieren los permisos concedidos. Si es falso, simplemente vuelve a las características básicas.
Al diseñar tu aplicación de esa manera puedes volver a introducir fácilmente los permisos opcionales en el apk principal sin tener que cambiar ningún código, por ejemplo si distribuyes varias versiones.
Ahora puede consultar privilegios desde el usuario activando la instalación de (una de) su (s) aplicación (es) stub. Así que si sus privilegios son necesarios después de que algún usuario ingrese en una actividad, inicie el apk para que aparezca si el privilegio no se ha concedido (por supuesto, puede poner una actividad explicativa delante de ella) y ejecutar la función al volver de El administrador del paquete o cuando el permiso se concedió antes. También puede poner la opción para habilitar o deshabilitar permisos en algún lugar de sus preferencias o un diálogo de firstrun.
Para personas perezosas (como yo) un breve resumen sobre cómo llevar el instalador del paquete: Crear una Intent
usando Intent.ACTION_VIEW
para un file://
-URI usando el tipo "application/vnd.android.package-archive"
. Los recursos y recursos no funcionan directamente, por ejemplo, puede agruparlo como recurso y copiarlo en la carpeta de caché o similar.
Advertencia: Es posible que esta respuesta no cumpla con los toS de Google Play, ya que este método tiene algunos problemas de desinstalación (puede que se produzcan pérdidas de aplicaciones, véase más adelante), especialmente cuando se desinstala mediante mecanismos de terceros (como Google Play, ya que el usuario no ve las aplicaciones de ayuda) Utilizando estos métodos) y como privilegios opcionales no se puede mostrar en la tienda de juegos afaik.
Para los problemas de desinstalación que recomiendo utilizar nombres como "MyApp: XXX permisos", dado el nombre de la aplicación es "MyApp", por lo que el usuario puede eliminar fácilmente todos en listas alfabéticamente. Alternativamente, si puede vivir con las aplicaciones de stub cada vez más complejas, utilice ACTION_PACKAGE_REMOVED como se menciona aquí .
- Decoración RecyclerView (con GridLayoutManager) para mostrar el divisor entre los elementos
- Android – overdraw diseño permite toque a través de LinearLayout