android实现一键锁屏和一键卸载的方法实例

作者:Hacker_Guo 时间:2022-12-13 15:59:08 

前言

本文主要介绍了关于android实现一键锁屏和一键卸载的相关内容,分享出来供大家参考学习,这两个功能也是大家在开发中会遇到的两个需求,下面话不多说了,来一起看看详细的介绍吧。

一.设备管理器操作步骤

1.创建类DeviceAdminReceiver的子类

如:com.itheima62.lockscreen.DeviceAdminSample

2.在清单文件中配置广播接收者


<receiver
 android:name="com.itheima62.lockscreen.DeviceAdminSample"
 android:description="@string/sample_device_admin_description"
 android:label="@string/sample_device_admin"
 android:permission="android.permission.BIND_DEVICE_ADMIN" >
 <meta-data
  android:name="android.app.device_admin"
  android:resource="@xml/device_admin_sample" />

<intent-filter>
  <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
 </intent-filter>
</receiver>

3.配置字符串相关信息


<string name="activity_sample_device_admin">设备管理员</string>
<string name="sample_device_admin">管理员</string>
<string name="sample_device_admin_description">开启设备管理员,不开启扣2000块</string>

4.在res目录下创建xml文件夹,在该文件夹下创建device_admin_sample.xml文件,内容:


<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<uses-policies>
<limit-password />
<watch-login />
<reset-password />
<force-lock />
<wipe-data />
<expire-password />
<encrypted-storage />
<disable-camera />
</uses-policies>
</device-admin>

5.在代码中创建设备管理器和组件


dpm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);
ComponentName who = new ComponentName(this, DeviceAdminSample.class);

6.写功能


dpm.lockNow();一键锁屏

二.源代码

创建类DeviceAdminReceiver的子类


package com.example.suoping;
import android.app.admin.DeviceAdminReceiver;
public class DeviceAdminSample extends DeviceAdminReceiver
{

}

MainActivity


package com.example.suoping;

import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity
{
private DevicePolicyManager dpm;
@Override
protected void onCreate(Bundle savedInstanceState)
{
 super.onCreate(savedInstanceState);
 //setContentView(R.layout.activity_main);
 dpm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);
 lockScreen(null);
}

/**
 * @param v
 * 一键锁屏
 */
public void lockScreen(View v)
{
 //如果没有激活设备管理员,提醒给用户做事
 ComponentName who = new ComponentName(this, DeviceAdminSample.class);
 if (dpm.isAdminActive(who))
 {
  dpm.lockNow();//一键锁屏
  finish();
 }
 else
 {

Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
   intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, who);
   intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
     "设备管理器,,,,,,,,,,,,,,,,");
   startActivityForResult(intent, 1);
 }
}

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
 getMenuInflater().inflate(R.menu.main, menu);
 return true;
}
}

RemoveActivity


package com.example.suoping;

import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;

public class RemoveActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
 // TODO Auto-generated method stub
 super.onCreate(savedInstanceState);
 remove(null);

}

/**
 * 一键卸载
 * @param v
 */
public void remove(View v)
{
 // 取消激活设备管理
 DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);
 ComponentName who = new ComponentName(this, DeviceAdminSample.class);
 dpm.removeActiveAdmin(who);//取消激活管理设备

//卸载
 Intent remove = new Intent("android.intent.action.DELETE");
 remove.addCategory("android.intent.category.DEFAULT");
 remove.setData(Uri.parse("package:" + getPackageName()));
 startActivity(remove);//卸载用户apk的界面
}
}

布局文件

MainActivity.xml


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000">
</RelativeLayout>

RemoveActivity.xml


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000"
>
</RelativeLayout>

AndroidManifest.xml


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.suoping"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
 android:minSdkVersion="8"
 android:targetSdkVersion="18" />

<application
 android:allowBackup="true"
 android:icon="@drawable/ic_launcher"
 android:theme="@style/AppTheme" >
 <activity
  android:name="com.example.suoping.MainActivity"
  android:label="一键锁屏" >
  <intent-filter>
   <action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
 </activity>
  <activity
  android:name="com.example.suoping.RemoveActivity"
  android:label="一键卸载" >
  <intent-filter>
   <action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
 </activity>

<receiver
  android:name="com.example.suoping.DeviceAdminSample"
  android:description="@string/sample_device_admin_description"
  android:label="@string/sample_device_admin"
  android:permission="android.permission.BIND_DEVICE_ADMIN" >
  <meta-data
   android:name="android.app.device_admin"
   android:resource="@xml/device_admin_sample" />
  <intent-filter>
   <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
  </intent-filter>
 </receiver>
</application>
</manifest>

device_admin_sample.xml


<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<uses-policies>
<limit-password />
<watch-login />
<reset-password />
<force-lock />
<wipe-data />
<expire-password />
<encrypted-storage />
<disable-camera />
</uses-policies>
</device-admin>

strings.xml


<resources>
<string name="app_name">一键锁屏</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string name="activity_sample_device_admin">设备管理员</string>
<string name="sample_device_admin">管理员</string>
<string name="sample_device_admin_description">开启设备管理员,不开启扣2000块</string>
</resources>

来源:https://blog.csdn.net/jiang_xinxing/article/details/79346978

标签:android,一键锁屏,一键卸载
0
投稿

猜你喜欢

  • Android编程动态按钮实现方法

    2021-12-31 18:05:17
  • Android Fragment动态创建详解及示例代码

    2023-04-26 00:25:33
  • C#中DataTable和List互转的示例代码

    2022-08-25 21:40:06
  • Java中Runnable与Callable接口的区别详解

    2021-12-22 11:33:28
  • Android绘制验证码的实例代码

    2023-10-30 13:57:15
  • Idea运行单个main方法,不编译整个工程的问题

    2021-09-06 09:57:22
  • Java抽象类和抽象方法定义与用法实例详解

    2023-10-02 14:30:13
  • Java面向对象之内部类案例讲解

    2021-09-16 13:28:19
  • Android使用Scroll+Fragment仿京东分类效果

    2022-11-17 16:56:48
  • Java集合的总体框架相关知识总结

    2021-06-25 10:43:36
  • Java中基于Shiro,JWT实现微信小程序登录完整例子及实现过程

    2023-07-05 15:01:42
  • 教你如何使用Java多线程编程LockSupport工具类

    2022-03-10 03:21:56
  • Java套接字(Socket)网络编程入门

    2022-09-22 16:19:56
  • Java基于Runtime调用外部程序出现阻塞的解决方法

    2023-11-09 04:24:23
  • VS2019配置OpenCV时找不到Microsoft.Cpp.x64.user的解决方法

    2023-07-01 01:57:36
  • Android实现实时通信示例

    2022-12-27 00:59:55
  • Lombok为啥这么牛逼?SpringBoot和IDEA官方都要支持它

    2021-10-18 23:04:50
  • C#异步编程详解

    2023-02-13 13:10:39
  • Android模块化中数据传递/路由跳转实现示例

    2023-06-29 03:12:06
  • java 内部类(匿名类,匿名对象,静态内部类)详解及实例

    2022-09-25 11:20:16
  • asp之家 软件编程 m.aspxhome.com