কম্পিউটার টিউটোরিয়াল

প্রোগ্রাম্যাটিক্যালি অ্যান্ড্রয়েড ডিভাইস লক করার পদ্ধতি

এই টিউটোরিয়ালে আমরা শিখব কীভাবে Device Administration API ব্যবহার করে অ্যান্ড্রয়েড ডিভাইসকে প্রোগ্রাম্যাটিক্যালি লক করা যায়।

প্রয়োজনীয় ধাপগুলো

ধাপ ১: নতুন প্রজেক্ট তৈরি করুন

Android Studio-তে File → New Project এ যান এবং প্রয়োজনীয় বিবরণ পূরণ করে একটি নতুন প্রজেক্ট তৈরি করুন।

ধাপ ২: লেআউট ফাইল তৈরি করুন

res/layout/activity_main.xml ফাইলে নিচের কোড যোগ করুন:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="16dp"
    tools:context=".MainActivity">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:orientation="horizontal">
        <Button
            android:id="@+id/btnEnable"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="enablePhone"
            android:text="Enable" />
        <Button
            android:id="@+id/btnLock"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="lockPhone"
            android:text="Lock" />
    </LinearLayout>
</RelativeLayout>

ধাপ ৩: ডিভাইস অ্যাডমিন পলিসি ফাইল তৈরি করুন

res/xml/policies.xml ফাইল তৈরি করুন:

<?xml version="1.0" encoding="utf-8"?>
<device-admin xmlns:android="https://schemas.android.com/apk/res/android">
    <uses-policies>
        <force-lock />
    </uses-policies>
</device-admin>

ধাপ ৪: ডিভাইস অ্যাডমিন রিসিভার তৈরি করুন

src/DeviceAdmin.java ফাইলে নিচের কোড যোগ করুন:

package app.tutorialspoint.com.sample;

import android.app.admin.DeviceAdminReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class DeviceAdmin extends DeviceAdminReceiver {
    @Override
    public void onEnabled(Context context, Intent intent) {
        super.onEnabled(context, intent);
        Toast.makeText(context, "সক্রিয় করা হয়েছে", Toast.LENGTH_SHORT).show();
    }
    
    @Override
    public void onDisabled(Context context, Intent intent) {
        super.onDisabled(context, intent);
        Toast.makeText(context, "নিষ্ক্রিয় করা হয়েছে", Toast.LENGTH_SHORT).show();
    }
}

ধাপ ৫: মেইন এক্টিভিটি লজিক বাস্তবায়ন করুন

src/MainActivity.java ফাইলে নিচের কোড যোগ করুন:

package app.tutorialspoint.com.sample;

import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    static final int RESULT_ENABLE = 1;
    DevicePolicyManager devicePolicyManager;
    ComponentName componentName;
    Button btnEnable, btnLock;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        btnEnable = findViewById(R.id.btnEnable);
        btnLock = findViewById(R.id.btnLock);
        devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
        componentName = new ComponentName(this, DeviceAdmin.class);
        
        boolean active = devicePolicyManager.isAdminActive(componentName);
        if (active) {
            btnEnable.setText("Disable");
            btnLock.setVisibility(View.VISIBLE);
        } else {
            btnEnable.setText("Enable");
            btnLock.setVisibility(View.GONE);
        }
    }
    
    public void enablePhone(View view) {
        boolean active = devicePolicyManager.isAdminActive(componentName);
        if (active) {
            devicePolicyManager.removeActiveAdmin(componentName);
            btnEnable.setText("Enable");
            btnLock.setVisibility(View.GONE);
        } else {
            Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
            intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "অ্যাপটি সক্রিয় করুন!");
            startActivityForResult(intent, RESULT_ENABLE);
        }
    }
    
    public void lockPhone(View view) {
        devicePolicyManager.lockNow();
    }
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            case RESULT_ENABLE:
                if (resultCode == Activity.RESULT_OK) {
                    btnEnable.setText("Disable");
                    btnLock.setVisibility(View.VISIBLE);
                } else {
                    Toast.makeText(getApplicationContext(), "ব্যর্থ!", Toast.LENGTH_SHORT).show();
                }
                return;
        }
    }
}

ধাপ ৬: ম্যানিফেস্টে রিসিভার রেজিস্টার করুন

AndroidManifest.xml ফাইলে নিচের কোড যোগ করুন:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.tutorialspoint.com.sample">
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver
            android:name=".DeviceAdmin"
            android:description="@string/app_description"
            android:label="@string/app_name"
            android:permission="android.permission.BIND_DEVICE_ADMIN">
            <meta-data
                android:name="android.app.device_admin"
                android:resource="@xml/policies" />
            <intent-filter>
                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
            </intent-filter>
        </receiver>
    </application>
</manifest>

গুরুত্বপূর্ণ সতর্কতা

Device Administration API Android 10 (API 29) থেকে ডিপ্রিকেটেড এবং Android 14 (API 34)-এ সরিয়ে ফেলা হয়েছে। আধুনিক অ্যাপগুলোর জন্য DevicePolicyManager এর পরিবর্তে LockTaskMode বা Enterprise Mobility Management (EMM) সমাধান ব্যবহার করা উচিত।

  1. অ্যান্ড্রয়েডে প্রোগ্রাম্যাটিক্যালি BroadcastReceiver নিবন্ধন করার পদ্ধতি

  2. অ্যান্ড্রয়েডে প্রোগ্রাম্যাটিক্যালি ডিভাইসের IMEI/ESN নম্বর পাওয়ার পদ্ধতি

  3. অ্যান্ড্রয়েডে প্রোগ্রাম্যাটিক্যালি ফোন নম্বর পাওয়ার পদ্ধতি

  4. Android ডিভাইসের প্রাইমারি ইমেইল ঠিকানা পাওয়ার পদ্ধতি