Android Studio Code for Lock Screen

Pre-requisites: Eclipse IDE, Android SDK
Step 1: Create Android project
Launch Eclipse IDE and create a new Android application project called AndroidLockScreenDemo with package name com.example
Step 2: Create Activity class
Create a new Activity class called MyLockScreenActivity within the above package and add the following code!
MyLockScreenActivity.java
package com.example;
 
import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
 
public class MyLockScreenActivity extends Activity implements OnClickListener {
 
    private static final int ADMIN_INTENT = 15;
    private static final String description = "Sample Administrator description";
    private DevicePolicyManager mDevicePolicyManager;
    private ComponentName mComponentName; 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lock);
        mDevicePolicyManager = (DevicePolicyManager)getSystemService( 
                Context.DEVICE_POLICY_SERVICE); 
        mComponentName = new ComponentName(this, MyAdminReceiver.class); 
        Button btnEnableAdmin = (Button) findViewById(R.id.btnEnable);
        Button btnDisableAdmin = (Button) findViewById(R.id.btnDisable);
        Button btnLock = (Button) findViewById(R.id.btnLock);
        btnEnableAdmin.setOnClickListener(this);
        btnDisableAdmin.setOnClickListener(this);
        btnLock.setOnClickListener(this);
    }
 
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btnEnable:
            Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mComponentName);
            intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,description);
            startActivityForResult(intent, ADMIN_INTENT);
            break;
 
        case R.id.btnDisable:
            mDevicePolicyManager.removeActiveAdmin(mComponentName); 
            Toast.makeText(getApplicationContext(), "Admin registration removed", Toast.LENGTH_SHORT).show();
            break;
 
        case R.id.btnLock:
            boolean isAdmin = mDevicePolicyManager.isAdminActive(mComponentName); 
            if (isAdmin) { 
                mDevicePolicyManager.lockNow(); 
            }else{
                Toast.makeText(getApplicationContext(), "Not Registered as admin", Toast.LENGTH_SHORT).show();
            }
            break;
        }
    }
 
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == ADMIN_INTENT) {
            if (resultCode == RESULT_OK) {
                Toast.makeText(getApplicationContext(), "Registered As Admin", Toast.LENGTH_SHORT).show();
            }else{
                Toast.makeText(getApplicationContext(), "Failed to register as Admin", Toast.LENGTH_SHORT).show();
            }
        }
    }
 
}
activity_lock.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MyLockScreenActivity">
 
    <TextView
        android:id="@+id/txt1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world"/>
 
    <Button
        android:id="@+id/btnEnable"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Enable"
        android:layout_below="@+id/txt1"/>
 
    <Button
        android:id="@+id/btnDisable"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Disable"
        android:layout_below="@+id/btnEnable"/>
 
    <Button
        android:id="@+id/btnLock"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Lock"
        android:layout_below="@+id/btnDisable"/>
 
</RelativeLayout>
Step 3: Add lock policy and create receiver
Create a new folder called xml inside the project and add an XML file for exercising admin rights called admin.xml containing the following code!
<device-admin xmlns:android="http://schemas.android.com/apk/res/android" >
    <uses-policies>
        <force-lock />
    </uses-policies>
</device-admin>
You also need to create an empty Receiver class that will extend the DeviceAdminReceiver. I am going to name my class as MyAdminReceiver.
MyAdminReceiver.java
package com.example;
 
import android.app.admin.DeviceAdminReceiver;
 
public class MyAdminReceiver extends DeviceAdminReceiver{
 
}
In this case, one needs to update the AndroidManifest.xml file and add the Receiver entry as follows!
<?xml version="1.0" encoding="utf-8"?>
    package="com.example"
    android:versionCode="1"
    android:versionName="1.0" >
 
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />
 
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.MyLockScreenActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
 
        <receiver
            android:name="MyAdminReceiver"
            android:permission="android.permission.BIND_DEVICE_ADMIN">
            <meta-data
                android:name="android.app.device_admin"
                android:resource="@xml/admin"/>
 
            <intent-filter>
                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
            </intent-filter>
        </receiver>
         
    </application>
 
</manifest>
Save all changes and make sure no errors are present. Finally, run the application on an Android device and you should now be able to lock your screen through code! 🙂

lock_screen_1
lock_screen_2

Comments

Popular posts from this blog

How to spoof your IP address using NMAP in Windows

Top 10 Highest Grossing Worldwide Bollywood Movies