在实现锁屏功能的时候首先要获得管理员权限,然后通过用户授权,用户如果同意授权,则就可以修改或设置锁屏密码。

具体方法如下:

1,首先要新建一个DeviceAdminReceiver的子类

import android.app.admin.DeviceAdminReceiver;public class AdminManageReceiver extends DeviceAdminReceiver {}

2,在清单文件对接收者进行配置

    <?xml version="1.0" encoding="utf-8"?>                                                                                                                                                                                                                                                                                                                

3,由于清单文件中用到了my_admin.xml,所以在在res目录下新建xml/my_admin.xml,内容如下:

    <?xml version="1.0" encoding="utf-8"?>                                                                                                                  


然后在mainActivity中:

    private DevicePolicyManager devicePolicyManager;          private boolean isAdminActive;            devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);              // 申请权限              ComponentName componentName = new ComponentName(this, MyAdmin.class);              // 判断该组件是否有系统管理员的权限              isAdminActive = devicePolicyManager                      .isAdminActive(componentName);                            if(!isAdminActive){//这一句一定要有...                  Intent intent = new Intent();                  //指定动作                  intent.setAction(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);                  //指定给那个组件授权                  intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);                  startActivity(intent);              }            if(isAdminActive){                          Toast.makeText(this, "具有权限,将进行锁屏....", 1).show();                          devicePolicyManager.lockNow();                          devicePolicyManager.resetPassword("123321", 0);                      }  

MainAcitivity的完整代码如下所示:

import android.os.Bundle;  import android.os.Vibrator;  import android.app.Activity;  import android.app.Service;  import android.app.admin.DevicePolicyManager;  import android.content.ComponentName;  import android.content.Context;  import android.content.Intent;  import android.hardware.Sensor;  import android.hardware.SensorEvent;  import android.hardware.SensorEventListener;  import android.hardware.SensorManager;  import android.view.Menu;  import android.view.View;  import android.widget.Button;  import android.widget.TextView;  import android.widget.Toast;    public class MainActivity extends Activity implements SensorEventListener {        private Button clear;      private TextView tv1;      private SensorManager mSensorManager;      private Vibrator vibrator;      private int counter = 1;      private DevicePolicyManager devicePolicyManager;      private boolean isAdminActive;        @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.main);            mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);          vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);          // clear = (Button) findViewById(R.id.clear);            // clear.setOnClickListener(new Button.OnClickListener() {          //          // @Override          // public void onClick(View v) {          // clear.setText("现在给button赋值喽....");          // }          // });          //          tv1 = (TextView) findViewById(R.id.tv1);            devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);          // 申请权限          ComponentName componentName = new ComponentName(this, MyAdmin.class);          // 判断该组件是否有系统管理员的权限          isAdminActive = devicePolicyManager                  .isAdminActive(componentName);                    if(!isAdminActive){              Intent intent = new Intent();              //指定动作              intent.setAction(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);              //指定给那个组件授权              intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);              startActivity(intent);          }        }        @Override      protected void onResume() {          super.onResume();            mSensorManager.registerListener(this,                  mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),                  SensorManager.SENSOR_DELAY_GAME);      }        @Override      protected void onStop() {          mSensorManager.unregisterListener(this);          super.onStop();      }        @Override      protected void onPause() {          mSensorManager.unregisterListener(this);          super.onPause();      }        @Override      public void onAccuracyChanged(Sensor sensor, int accuracy) {        }        @Override      public void onSensorChanged(SensorEvent event) {          int sensorType = event.sensor.getType();          float[] values = event.values;            float x = values[0];          float y = values[1];            if (sensorType == Sensor.TYPE_ACCELEROMETER) {              tv1.setText("现在的x轴是: " + x + " y轴是: " + y);                if (Math.abs(x) > 9.0 || Math.abs(y) > 9.0) {  //              Toast.makeText(this, "现在的垂直方向已经超过了90度,将进行锁屏", 1).show();                  vibrator.vibrate(500);                    System.out.println("...............isAdminActive: "                          + isAdminActive);                  if(isAdminActive){                      Toast.makeText(this, "具有权限,将进行锁屏....", 1).show();                      devicePolicyManager.lockNow();                      devicePolicyManager.resetPassword("123321", 0);                  }                                  }          }      }        @Override      public boolean onCreateOptionsMenu(Menu menu) {          // Inflate the menu; this adds items to the action bar if it is present.          getMenuInflater().inflate(R.menu.main, menu);          return true;      }    }  



更多相关文章

  1. 在Ubuntu16.04下编译FFmpeg4.2.3
  2. andriod 中下载图片到sdcard中例子
  3. Application Fundamentals--Processes and Threads(进程与线程)
  4. Android(安卓)Studio 模拟器 adb shell 进入 root 调试模式
  5. 搭建windows下的android开发环境
  6. 《第一行代码-Android》学习笔记(八)
  7. Android访问权限总结
  8. Android动画之一:Drawable Animation
  9. 自定义平滑滑动页面的组件:DragableSpace

随机推荐

  1. Android(安卓)关于lambda 的下划线
  2. webView系列(十一)----webview网页调试之se
  3. Android热修复:Andfix和Hotfix,两种方案的
  4. 【边做项目边学Android】异常处理:android
  5. Windows7 64位系统搭建Cocos2d-x-2.2.1最
  6. 【Android】技术调研:用代码模拟屏幕点击
  7. Android软件安全开发实践(上)
  8. [转]android开发新浪微博客户端 完整攻略
  9. Android Launcher开发(一)LiveFolder(实
  10. 国内几大Android应用市场试用小记——开