Lock the Android device programmatically
Asked Answered
M

4

25

I have been trying to lock the device through program. But I can't find the solution still. I want to lock Android froyo2.2 through program. I have tried keyguardmanager and DeviceAdminManager.

My app is to remote lock the device. When message is received with some code words to lock then it locks the phone. I have found many Api_demo program as solution but I can't extract lock code alone from that and find solution.

Mallis answered 28/12, 2010 at 9:41 Comment(1)
then supply the answer yourself, and accept itColloquy
M
16

The activity class should be inner class and the outter class should extend DeviceAdminReceiver

public class adminActivity extends DeviceAdminReceiver {

   public static class Controller extends Activity {

                    DevicePolicyManager mDPM;
            ComponentName mDeviceAdminSample;

        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);

                mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
                mDeviceAdminSample = new ComponentName(Controller.this,
                        adminActivity.class);
      }
   }
}

To lock the device write the code in the event where you use to lock

if (active) {
mDPM.lockNow();
}

If DeviceAdmin is enabled then the phone will be locked. To enable the device admin, the DevicePolicyManager intent is called and it should be enabled by the user.

Intent intent = new   Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);  
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample);        
Mallis answered 26/3, 2011 at 6:42 Comment(5)
adithi waht is securemeAdmin and active ?i have same problem. can u explainTwist
can anyone please say what is active and what is secureadmin here?Winterize
This above code is taken from DeviceAdminSample present in Android sdk samples that are available with Android SDK. APIDemos-->appKaraite
Would have seriously helped save a lot of time had you just pasted what securemeAdmin was.Volnak
The complete code can be seen in the accepted answer of this thread: #8988347Headwater
S
2

In order to solve this task you can take a look to NoKeyGuard source code and more precisely to a NoKeyGuard Service class and KeyguardLockWrapper class.

To unlock the device write the code in the event where you use to unlock:

    Context context= getApplicationContext();
    KeyguardManager _guard = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
    KeyguardLock _keyguardLock = _guard.newKeyguardLock("KeyguardLockWrapper");
    //to disable
    _keyguardLock.disableKeyguard();
    //to enable
    _keyguardLock.reenableKeyguard();
Suborbital answered 10/5, 2012 at 13:42 Comment(1)
This is now obsolete. Do not use!Sociology
Q
1

The activity class should be the inner class and the outer class should extend DeviceAdminReceiver

public class adminActivity extends DeviceAdminReceiver {

    public static class Controller extends Activity {

                DevicePolicyManager mDPM;
        ComponentName mDeviceAdminSample;

    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
            mDeviceAdminSample = new ComponentName(Controller.this,
                    adminActivity.class);
  }
 }
}
Quadrisect answered 7/3, 2013 at 5:4 Comment(0)
S
-4
        WindowManager.LayoutParams lp = getWindow().getAttributes();
        lp.screenBrightness = 0;
        getWindow().setAttributes(lp);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
Sociology answered 16/4, 2013 at 7:21 Comment(1)
This used to work, say in Android 2.3, but does not work any more.Jugurtha

© 2022 - 2024 — McMap. All rights reserved.