Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

एंड्रॉइड डिवाइस को प्रोग्रामेटिकली लॉक कैसे करें?

डिवाइस एडमिन API से स्क्रीन लॉक करना

यह उदाहरण दर्शाता है कि DevicePolicyManager और डिवाइस एडमिन रिसीवर का उपयोग करके एंड्रॉइड डिवाइस को प्रोग्रामेटिकली कैसे लॉक करें। इसके लिए यूजर को ऐप को डिवाइस एडमिन के रूप में इनेबल करना होगा।

चरण 1: नया प्रोजेक्ट बनाएं

Android Studio में File → New Project चुनें।

चरण 2: लेआउट XML (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="इनेबल" />

        <Button
            android:id="@+id/btnLock"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="lockPhone"
            android:text="लॉक" />

    </LinearLayout>
</RelativeLayout>

चरण 3: डिवाइस एडमिन पॉलिसी (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>

चरण 4: DeviceAdminReceiver क्लास

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();
    }
}

चरण 5: 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 android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    static final int RESULT_ENABLE = 1;
    DevicePolicyManager deviceManager;
    ComponentName compName;
    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);

        deviceManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
        compName = new ComponentName(this, DeviceAdmin.class);

        updateButtonState();
    }

    private void updateButtonState() {
        boolean active = deviceManager.isAdminActive(compName);
        if (active) {
            btnEnable.setText("डिसेबल");
            btnLock.setVisibility(View.VISIBLE);
        } else {
            btnEnable.setText("इनेबल");
            btnLock.setVisibility(View.GONE);
        }
    }

    public void enablePhone(View view) {
        boolean active = deviceManager.isAdminActive(compName);
        if (active) {
            deviceManager.removeActiveAdmin(compName);
            updateButtonState();
        } else {
            Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, compName);
            intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "ऐप को इनेबल करें!");
            startActivityForResult(intent, RESULT_ENABLE);
        }
    }

    public void lockPhone(View view) {
        deviceManager.lockNow();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == RESULT_ENABLE) {
            if (resultCode == Activity.RESULT_OK) {
                updateButtonState();
            } else {
                Toast.makeText(this, "विफल!", Toast.LENGTH_SHORT).show();
            }
        }
    }
}

चरण 6: 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>

महत्वपूर्ण नोट्स

  • Android 10 (API 29)+ पर डिवाइस एडमिन API डिप्रिकेटेड है। एंटरप्राइज यूज केस के लिए Android Management API या WorkProfile का उपयोग करें।
  • यूजर को सेटिंग्स में जाकर मैन्युअली "डिवाइस एडमिन ऐप्स" में ऐप को इनेबल करना पड़ता है।
  • lockNow() तुरंत स्क्रीन लॉक करता है और कीगार्ड दिखाता है।

आउटपुट

"इनेबल" बटन दबाने पर सिस्टम डायलॉग खुलेगा। इनेबल होने के बाद "लॉक" बटन दिखेगा, जिसे दबाने पर डिवाइस लॉक हो जाएगा।

एंड्रॉइड डिवाइस को प्रोग्रामेटिकली लॉक कैसे करें?

  1. एंड्रॉइड में प्रोग्रामेटिक रूप से डिवाइस का IMEI/ESN नंबर कैसे प्राप्त करें? एंड्रॉइड में प्रोग्रामेटिक रूप से डिवाइस का IMEI/ESN नंबर कैसे प्राप्त करें?

    READ_PHONE_STATE परमिशन के साथ IMEI नंबर प्राप्त करें यह उदाहरण दर्शाता है कि TelephonyManager का उपयोग करके डिवाइस का IMEI नंबर कैसे प्राप्त करें और रनटाइम परमिशन कैसे संभालें। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: लेआउट में बटन और TextView res/layout/acti

  1. एंड्रॉइड में प्रोग्रामेटिक रूप से फोन नंबर कैसे प्राप्त करें? एंड्रॉइड में प्रोग्रामेटिक रूप से फोन नंबर कैसे प्राप्त करें?

    TelephonyManager से फोन नंबर पढ़ना (परमिशन के साथ) यह उदाहरण दर्शाता है कि TelephonyManager.getLine1Number() का उपयोग करके डिवाइस का फोन नंबर कैसे प्राप्त करें और रनटाइम परमिशन कैसे संभालें। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: लेआउट में TextView res/layou

  1. Android डिवाइस का प्राइमरी ईमेल एड्रेस कैसे प्राप्त करें? Android डिवाइस का प्राइमरी ईमेल एड्रेस कैसे प्राप्त करें?

    परिचय यह ट्यूटोरियल दिखाता है कि Android डिवाइस पर कॉन्फ़िगर किए गए अकाउंट्स में से प्राइमरी ईमेल एड्रेस कैसे प्राप्त करें। हम AccountManager और GET_ACCOUNTS परमिशन का उपयोग करेंगे। ⚠️ महत्वपूर्ण चेतावनी नोट: यह प्रोग्राम केवल रूटेड डिवाइस पर ही काम करेगा। आधुनिक Android वर्जन (Android 6.0+) में `G