Android 实现一键锁屏

应用安装后屏幕上会出现两个图标,点击“一键锁屏”时,若未配置设备管理器权限,则跳转到“配置一键锁屏界面”,否则直接锁屏
效果图

Android 实现一键锁屏_第1张图片
1.PNG
Android 实现一键锁屏_第2张图片
![Uploading 3_728048.PNG . . .]
Android 实现一键锁屏_第3张图片
3.PNG
Android 实现一键锁屏_第4张图片
4.PNG

1. 新建 LockScreen.java 文件,添加“一键锁屏”代码

//一键锁屏
public class LockScreen extends AppCompatActivity { 
   
    private DevicePolicyManager devicePolicyManager;
    
    @Override    
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);       
        devicePolicyManager =(DevicePolicyManager)getSystemService(DEVICE_POLICY_SERVICE);   
       //若未注册设备管理器,跳转到配置界面        
        try{            
              devicePolicyManager.lockNow();            
              finish();        
        }
        catch (Exception e){            
              Intent intent = new Intent(this, MainActivity.class); 
              startActivity(intent);           
              finish();        
        }    
    }
}

2.在 MainActivity 中配置一键锁屏代码

2.1  放置3个按钮,btnSetAdmin, btnCancleAdmin, btnLockScreen 分别为注册设备管理器,注销设备管理器,一键锁屏。注册与注销按钮每次只能显示一个,故在 xml 文件中将注册与注销按钮放在一个 FrameLayout 中,利用 android:visibility 设置是否可见

    
        

2.2  将按钮可见设置封装起来便于多次使用;初始化时,显示取消设备管理器界面


    //取消设备管理器界面
    private void showCancle() {
        btnSetAdmin.setVisibility(View.INVISIBLE);
        btnCancleAdmin.setVisibility(View.VISIBLE);
        btnLockScreen.setVisibility(View.VISIBLE);
    }

    //设置设备管理器界面
    private void showSet(){
        btnSetAdmin.setVisibility(View.VISIBLE);
        btnCancleAdmin.setVisibility(View.INVISIBLE);
        btnLockScreen.setVisibility(View.INVISIBLE);
    }

        DevicePolicyManager devicePolicyManager = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);

        //若已注册设备管理器,显示取消设备管理器页面
        if(devicePolicyManager.isAdminActive(new ComponentName(this, DeviceMangerBc.class))){
            showCancle();
        }

2.3  新建 DeviceMangerBc.java 文件,设置广播接收器并且在 广播接收器配置文件中添加 (这里弹出 Toast 提示)

//广播接收器
public class DeviceMangerBc 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();
    }
}

        

            

            
                
                
            

        

2.4  按钮逻辑设置

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.btn_set_admin:
                Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
                intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, new ComponentName(this, DeviceMangerBc.class));
                startActivityForResult(intent, 1);
                break;
            case R.id.btn_cancle_admin:
                devicePolicyManager.removeActiveAdmin(new ComponentName(this, DeviceMangerBc.class));
                showSet();
                break;
            case R.id.btn_lock_screen:
                devicePolicyManager.lockNow();
                break;
            default:

        }
    }

这里使用 startActivityForResult( ) ,可对跳转到激活设备管理器界面时做出判断,否则使用 startActivity( ) ,不管是否激活,都会执行相应代码

接下来就可以一键锁屏啦,但是今天的安卓机哪个不自带这个功能。。。-_-

你可能感兴趣的:(Android 实现一键锁屏)