devicePolicyManager.lockNow() is not working for Motorola Tablets

前端 未结 1 563
一生所求
一生所求 2020-12-09 12:27
public final static void lockDevice()
    {
        try
        {
            if (devicePolicyManager.isAdminActive(adminComponent))
            {
                de         


        
相关标签:
1条回答
  • 2020-12-09 13:09

    Possible reasons for this problem

    1) I think there is some problem with receiver's meta-data in your AndroidManifest.xml

    2) You haven't added the correct class(extended with DeviceAdminReceiver) to either adminComponent OR to android:name property of receiver.

    After spending lot of time on this i have created the code.


    Code for main Activity

    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 a folder 'xml' in 'res'. Then create my_admin.xml file in '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 given bellow 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.

    0 讨论(0)
提交回复
热议问题