DevicePolicyManager.lockNow () does not work for Motorola tablets

public final static void lockDevice() { try { if (devicePolicyManager.isAdminActive(adminComponent)) { devicePolicyManager.lockNow(); } } catch (final Exception ex) { ... } } 

The code above does not raise any exceptions or block the screen for Motorola Xoom tablets only. (For both homemade and ice cream). The same code works fine on other tablets for the home computer and ICS.

I googled but got no solution. Any ideas .....?

+8
android motorola locking device-policy-manager
Jan 24 '12 at 13:45
source share
1 answer

Possible causes of this problem

1) I think there is some problem with the metadata receiver in your AndroidManifest.xml

2) You did not add the correct class (extended using DeviceAdminReceiver) either in the adminComponent OR or in the android: name property of the recipient.

After spending a lot of time on this, I created the code.


Code for core business

 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); } } } 


Create a new class - Darclass - code

 import android.app.admin.DeviceAdminReceiver; public class Darclass extends DeviceAdminReceiver{ } 


Create the 'xml' folder in 'res'. Then create the my_admin.xml file in the xml folder. Code for my_admin.xml. Note add this receiver after </activity> and before </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> 


Finally, add the receiver below to your 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> 

It should work on your device.

+21
Feb 07 '12 at 15:55
source share



All Articles