Android手机想黑屏时可以按侧边电源按钮,但是总觉得不方便,又担心按多了会按坏(毕竟是实体按键)。
环境:Android Studio 2.3.3
一、主程序
public class MainActivity extends Activity {
private ComponentName componentName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// 退出 APP
public void onClose(View v) {
finish();
}
// 点击锁屏
public void onLockScreen(View v) {
LockScreen();
}
// 锁屏
public void LockScreen() {
DevicePolicyManager dpManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
componentName = new ComponentName(this, LockReceiver.class);
if (dpManager.isAdminActive(componentName)) {
dpManager.lockNow();
// 直接锁屏然后退出APP
//android.os.Process.killProcess(android.os.Process.myPid());
} else {
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "一键锁屏");
startActivity(intent);
}
}
}
二、注册
<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=".LockReceiver"
android:description="@string/app_name"
android:label="@string/app_name"
android:permission="android.permission.BIND_DEVICE_ADMIN" >
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/lock_screen" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
</application>
三、LockReceiver.java
public class LockReceiver extends DeviceAdminReceiver {
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
}
@Override
public void onEnabled(Context context, Intent intent) {
super.onEnabled(context, intent);
}
@Override
public void onDisabled(Context context, Intent intent) {
super.onDisabled(context, intent);
}
}
四、布局文件
有个背景文件 b5.png
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/b5"
android:weightSum="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="16dp"
android:layout_marginBottom="32dp"
android:weightSum="1">
<ImageButton
android:id="@+id/imageButton"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginLeft="16dp"
android:onClick="onClose"
android:src="?attr/homeAsUpIndicator" />
<TextView
android:id="@+id/disSecond"
android:layout_width="wrap_content"
android:layout_height="53dp"
android:layout_weight="0.20"
android:layout_marginLeft="38dp"
android:shadowColor="#cc606264"
android:shadowDx="3"
android:shadowDy="3"
android:shadowRadius="3"
android:text="直接锁屏"
android:gravity="center"
android:textColor="#0deaea"
android:textSize="30sp" />
</LinearLayout>
<Button
android:id="@+id/bLockScreen"
android:layout_width="168dp"
android:layout_height="wrap_content"
android:onClick="onLockScreen"
android:layout_gravity="center"
android:text="锁屏" />
</LinearLayout>
五、XML文件 xml\lock_screen.xml
<?xml version="1.0" encoding="UTF-8"?>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android" >
<uses-policies>
<force-lock />
</uses-policies>
</device-admin>
环境:Android Studio 2.3.3
一、主程序
public class MainActivity extends Activity {
private ComponentName componentName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// 退出 APP
public void onClose(View v) {
finish();
}
// 点击锁屏
public void onLockScreen(View v) {
LockScreen();
}
// 锁屏
public void LockScreen() {
DevicePolicyManager dpManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
componentName = new ComponentName(this, LockReceiver.class);
if (dpManager.isAdminActive(componentName)) {
dpManager.lockNow();
// 直接锁屏然后退出APP
//android.os.Process.killProcess(android.os.Process.myPid());
} else {
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "一键锁屏");
startActivity(intent);
}
}
}
二、注册
<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=".LockReceiver"
android:description="@string/app_name"
android:label="@string/app_name"
android:permission="android.permission.BIND_DEVICE_ADMIN" >
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/lock_screen" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
</application>
三、LockReceiver.java
public class LockReceiver extends DeviceAdminReceiver {
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
}
@Override
public void onEnabled(Context context, Intent intent) {
super.onEnabled(context, intent);
}
@Override
public void onDisabled(Context context, Intent intent) {
super.onDisabled(context, intent);
}
}
四、布局文件
有个背景文件 b5.png
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/b5"
android:weightSum="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="16dp"
android:layout_marginBottom="32dp"
android:weightSum="1">
<ImageButton
android:id="@+id/imageButton"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginLeft="16dp"
android:onClick="onClose"
android:src="?attr/homeAsUpIndicator" />
<TextView
android:id="@+id/disSecond"
android:layout_width="wrap_content"
android:layout_height="53dp"
android:layout_weight="0.20"
android:layout_marginLeft="38dp"
android:shadowColor="#cc606264"
android:shadowDx="3"
android:shadowDy="3"
android:shadowRadius="3"
android:text="直接锁屏"
android:gravity="center"
android:textColor="#0deaea"
android:textSize="30sp" />
</LinearLayout>
<Button
android:id="@+id/bLockScreen"
android:layout_width="168dp"
android:layout_height="wrap_content"
android:onClick="onLockScreen"
android:layout_gravity="center"
android:text="锁屏" />
</LinearLayout>
五、XML文件 xml\lock_screen.xml
<?xml version="1.0" encoding="UTF-8"?>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android" >
<uses-policies>
<force-lock />
</uses-policies>
</device-admin>