Cómo implementar la característica como la protección de avance de applock en mi aplicación

Quiero hacer que la aplicación que es similar a AppLock en el android.app lock tiene una función de protección anticipada que detiene la desinstalación de la aplicación.Se trabaja con el enraizamiento del teléfono. He intentado horas juntos y probado tantas soluciones de similar tipo de pregunta de stackoverflow, pero no podía hacerlo a través de él.

Mientras que haciendo esto me encontré con "derechos de administrador del dispositivo".

  1. Puedo hacer lo que quiero hacer usando los derechos de administrador.

  2. Si no cómo funciona la protección anticipada AppLock, quiero decir cómo restringir al usuario para desinstalar la aplicación.

Tienes que hacer que tu aplicación como propietario de dispositivo tenga privilegios más altos que la aplicación de administración de dispositivos.

Para más información, consulte http://florent-dupont.blogspot.com/2015/02/10-things-to-know-about-device-owner.html y aquí https://source.android.com/devices/ Tech / admin / provision.html

Puede establecer una política con la aplicación admins / owner, que evitará la desinstalación.

También puede echar un vistazo a la solución MDM proporcionada por los OEM. Samsung tiene APIs muy potentes para administrar todos los aspectos del dispositivo: https://www.samsungknox.com/es/partners/mobile-device-managers

La solución es utilizar: Device Administration API

La API de administración de dispositivos está especialmente diseñada para aplicaciones empresariales. Y esta API proporciona funciones de administración a nivel de sistema.

Así que ¿cómo funciona?

Utilice la API de administración de dispositivos para escribir aplicaciones de administración de dispositivos que los usuarios instalen en sus dispositivos. La aplicación admin del dispositivo aplica las directivas deseadas. Así es como funciona:

Si los usuarios no habilitan la aplicación admin del dispositivo, ésta permanecerá en el dispositivo, pero en estado inactivo. Los usuarios no estarán sujetos a sus políticas y, por el contrario, no obtendrán ningún beneficio de la aplicación; por ejemplo, es posible que no puedan sincronizar los datos.

Si un usuario no cumple con las políticas (por ejemplo, si un usuario establece una contraseña que infringe las directrices), corresponde a la aplicación decidir cómo manejarlo. Sin embargo, normalmente esto hará que el usuario no pueda sincronizar datos.

Si un dispositivo intenta conectarse a un servidor que requiere políticas no admitidas en la API de administración de dispositivos, no se permitirá la conexión. Actualmente, la API de administración de dispositivos no permite el aprovisionamiento parcial. En otras palabras, si un dispositivo (por ejemplo, un dispositivo heredado) no admite todas las directivas establecidas, no hay forma de permitir que el dispositivo se conecte.

Si un dispositivo contiene varias aplicaciones de administración habilitadas, se aplica la directiva más estricta. No hay forma de orientar una determinada aplicación de administración.

Para desinstalar una aplicación de administración de dispositivos existente, los usuarios necesitan primero anular el registro de la aplicación como administrador.

Aquí hay un código de ejemplo que implementa lo mismo:

  import java.util.List; import android.os.Bundle; import android.app.Activity; import android.app.admin.DevicePolicyManager; import android.content.ComponentName; import android.content.Context; import android.util.Log; import android.view.Menu; public class ActiveDevicePolicy extends Activity { private DevicePolicyManager activeDevicePolicyManager; private final String LOG_TAG = "ActiveDevicePolicy"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_active_device_policy); activeDevicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); List<ComponentName> activeAdmins = activeDevicePolicyManager.getActiveAdmins(); if(activeAdmins != null && !activeAdmins.isEmpty()){ for(int index = 0; index < activeAdmins.size(); index++ ){ Log.i(LOG_TAG, "flattenToShortString: "+ activeAdmins.get(index).flattenToShortString()); Log.i(LOG_TAG, "flattenToString: "+ activeAdmins.get(index).flattenToString()); Log.i(LOG_TAG, "getClassName: "+ activeAdmins.get(index).getClassName()); Log.i(LOG_TAG, "getPackageName: "+ activeAdmins.get(index).getPackageName()); Log.i(LOG_TAG, "getShortClassName: "+ activeAdmins.get(index).getShortClassName()); Log.i(LOG_TAG, "toShortString: "+ activeAdmins.get(index).toShortString()); } } else { Log.i(LOG_TAG, "No Active Device Policy Manager"); } } } 

En el código anterior he llamado DevicePolicyManager.getActiveAdmins() método para recuperar la lista de todos los administradores que están activos en este momento. Ahora la parte interesante aquí es que, desde su devolución de una lista; Podría haber más de un administrador de dispositivos en esa lista. ¡Así que la política más estricta sigue activa!

¡Espero eso ayude!

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.