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

10 Most Beautiful Canal Cities in the World

Download Shinchan Episodes in Hindi