Android 锁屏

本文介绍了如何在Android Studio中实现自定义的一键锁屏功能。通过创建`MainActivity`、注册广播接收器`LockReceiver`,并在布局文件中设置点击事件,利用`DevicePolicyManager`来控制设备即时锁屏。此外,还提供了相应的XML配置文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值