razones posibles para este problema
1) Creo que hay algún problema con meta-datos del receptor en su AndroidManifest.xml
2) Usted no ha agregado la clase correcta (ampliado 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{
}
Crear una carpeta 'xml' en 'res'. Luego crea mi archivo myadmin.xml en la carpeta 'xml'. Código para my_admin.xml. Nota agregar este receptor después de </activity>
y antes </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>
Por último añadir 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>
Se debe trabajar en su dispositivo.
Solo curiosidad usaste el USES_POLICY_FORCE_LOCK estoy seguro de que solo preguntaste? También he leído que el bloqueo de locknow() para los dispositivos de Motorola, pero que no tenía que ver con las tabletas, era sobre DroidX. –
sí, tengo el permiso 'USES_POLICY_FORCE_LOCK' –