DevicePolicyManager.lockNow () no funciona para los tablets de Motorola
public final static void lockDevice() { try { if (devicePolicyManager.isAdminActive(adminComponent)) { devicePolicyManager.lockNow(); } } catch (final Exception ex) { ... } }
El código anterior no arroja ninguna excepción ni bloquea la pantalla para las tabletas motorola xoom solamente. (Tanto Homeycomb como Icecream Sandwitch) El mismo código funciona perfectamente en otras tabletas Homeycomb e ICS.
Busqué en Google, pero no obtuve ninguna solución. Algunas ideas…..?
- La aplicación de Android se estrella en Motorola defy reason <s3dReadConfigFile: 75>: No se puede abrir el archivo para leer
- Cómo abrir MIME - "application / x-509-server-cert" tipo en Android Moto G?
- Los controladores usb para adb no funcionan para Motorola mc40
- Android 1.x Contacts.Extensions para un tipo de cuenta personalizada?
- En mi aplicación no estoy recibiendo velocidad en el objeto de ubicación en Moto G 3rd generation Android 6.0 móvil
- ¿Es mi "hal_process_report_ind: mala calidad del artículo: 11" algo de qué preocuparse?
- Android 4.4.4 Moto G Bluetooth LE vuelve a conectar el problema
- Cómo configurar SDK android para el desarrollo de línea de comandos en linux?
- Soporte de resolución en Android 2.0
- Ionic View no se muestra en cromo inspeccionar
- Error de WifiStateMachine
- Cómo evitar la conexión Bluetooth RFCOMM de morir inmediatamente después de .connect ()?
- Conexión del teléfono Android con ADB
Posibles razones para este problema
1) Creo que hay algún problema con los meta-datos del receptor en tu AndroidManifest.xml
2) No ha agregado la clase correcta (extendida con DeviceAdminReceiver) a adminComponent O a android: nombre de la propiedad del receptor.
Después de pasar mucho tiempo en esto he creado el código.
Código de actividad principal
public class LockerTest extends Activity { protected static final int REQUEST_ENABLE = 0; DevicePolicyManager devicePolicyManager; ComponentName adminComponent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button = (Button) findViewById(R.id.btn); button.setOnClickListener(btnListener); } Button.OnClickListener btnListener = new Button.OnClickListener() { public void onClick(View v) { adminComponent = new ComponentName(LockerTest.this, Darclass.class); devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); if (!devicePolicyManager.isAdminActive(adminComponent)) { Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, adminComponent); startActivityForResult(intent, REQUEST_ENABLE); } else { devicePolicyManager.lockNow(); } } }; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (REQUEST_ENABLE == requestCode) { super.onActivityResult(requestCode, resultCode, data); } } }
Crear una nueva clase – Darclass – código
import android.app.admin.DeviceAdminReceiver; public class Darclass extends DeviceAdminReceiver{ }
Cree una carpeta 'xml' en 'res'. A continuación, cree el archivo my_admin.xml en la carpeta 'xml'. Código para my_admin.xml. Nota: agregue este receptor después de </activity>
y antes de </application>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android"> <uses-policies> <limit-password /> <watch-login /> <reset-password /> <force-lock /> <wipe-data /> </uses-policies> </device-admin>
Finalmente agregue el receptor dado abajo a su AndroidManifest.xml
<receiver android:name=".Darclass" android:permission="android.permission.BIND_DEVICE_ADMIN" > <meta-data android:name="android.app.device_admin" android:resource="@xml/my_admin" /> <intent-filter> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> </intent-filter> </receiver>
Debe funcionar en su dispositivo.
- ¿Cómo hacer la barra de búsqueda personalizada en android?
- Listview eliminar elemento y Actualizar – android