Giới thiệu
Hướng dẫn này minh họa cách bật và tắt màn hình thiết bị Android theo chương trình (programmatically) bằng cách sử dụng DevicePolicyManager và quyền quản trị thiết bị (Device Admin).
Các bước thực hiện
Bước 1: Tạo dự án mới
Mở Android Studio, chọn File → New Project và điền thông tin cần thiết.
Bước 2: Thiết kế giao diện (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="Kích hoạt" />
<Button
android:id="@+id/btnLock"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="lockPhone"
android:text="Khóa màn hình" />
</LinearLayout>
</RelativeLayout>
Bước 3: Tạo file chính sách (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>
Bước 4: Tạo 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, "Đã kích hoạt", Toast.LENGTH_SHORT).show();
}
@Override
public void onDisabled(Context context, Intent intent) {
super.onDisabled(context, intent);
Toast.makeText(context, "Đã vô hiệu hóa", Toast.LENGTH_SHORT).show();
}
}
Bước 5: Viết code MainActivity
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 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);
boolean active = deviceManager.isAdminActive(compName);
if (active) {
btnEnable.setText("Vô hiệu hóa");
btnLock.setVisibility(View.VISIBLE);
} else {
btnEnable.setText("Kích hoạt");
btnLock.setVisibility(View.GONE);
}
}
public void enablePhone(View view) {
boolean active = deviceManager.isAdminActive(compName);
if (active) {
deviceManager.removeActiveAdmin(compName);
btnEnable.setText("Kích hoạt");
btnLock.setVisibility(View.GONE);
} else {
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, compName);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "Bạn nên kích hoạt ứng dụng này!");
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);
switch (requestCode) {
case RESULT_ENABLE:
if (resultCode == Activity.RESULT_OK) {
btnEnable.setText("Vô hiệu hóa");
btnLock.setVisibility(View.VISIBLE);
} else {
Toast.makeText(getApplicationContext(), "Thất bại!", Toast.LENGTH_SHORT).show();
}
return;
}
}
}
Bước 6: Cấu hình 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>
Chạy ứng dụng
Kết nối thiết bị Android thật, chạy ứng dụng từ Android Studio. Nhấn "Kích hoạt" để cấp quyền Device Admin, sau đó nhấn "Khóa màn hình" để tắt màn hình.
