Es posible conceder privilegios a una aplicación ya instalada por no solicitar los permisos de la aplicación "principal" y mediante la creación de otra aplicación ("stub") utilizando el mismo android:sharedUserId
, que solicita Las características. A continuación, puede comprobar si la aplicación de permiso-talón se ha instalado comprobando si
context.checkCallingOrSelfPermission(permission) == PackageManager.PERMISSION_GRANTED
se evalúa como verdadera (con el contexto como un contexto válido y permiso como una de las series de permiso). Si es verdad, su aplicación de código auxiliar se ha instalado y usted puede desbloquear funciones que requieren los permisos concedidos. Si es falso, simplemente vuelve a las características básicas.
Al diseñar su aplicación de esa manera, puede volver a introducir fácilmente los permisos opcionales en la aplicación principal sin tener que cambiar ningún código, por ejemplo, si distribuye varias versiones.
Ahora puede consultar los privilegios del usuario activando la instalación de (uno de) su (s) stub (s) aplicación (es). Por lo tanto, si sus privilegios son necesarios después de la entrada de algún usuario en una actividad, inicie la aplicación para que aparezca si no se le ha otorgado el privilegio (por supuesto, puede colocar una actividad explicativa delante) y ejecute la función cuando regrese de ella. el administrador del paquete o cuando el permiso fue otorgado antes. También puede colocar la opción para habilitar o deshabilitar permisos en algún lugar de sus preferencias o en un primer cuadro de diálogo.
Para los perezosos (como yo) un breve resumen sobre cómo llevar el instalador del paquete: Crear una Intent
usando Intent.ACTION_VIEW
para un file://
-uri utilizando el Tipo "application/vnd.android.package-archive"
. Los activos y los recursos no funcionan directamente, por ejemplo, puedes agruparlos como activos y copiarlos en la carpeta de caché o similar.
Advertencia: Esta respuesta podría no cumplir con la aplicación Google Play ToS, ya que este método tiene algunos problemas de desinstalación (pueda filtrarse aplicaciones, ver más abajo) EXPECIALLY al desinstalar a través de mecanismos de terceros (como Google Play, ya que el usuario no ve las aplicaciones de ayuda usando estos métodos) y como privilegios opcionales no se pueden mostrar en la tienda de juegos afaik.
Para los problemas de desinstalación, recomiendo usar nombres como "MyApp: permisos XXX", dado que el nombre de la aplicación es "MyApp", por lo que el usuario puede eliminarlos fácilmente en listas alfabéticamente listadas.Alternativamente, si puede vivir con las aplicaciones de stub cada vez más complejas, use ACTION_PACKAGE_REMOVED as mentioned here.
No ............. –