前言
本文主要介绍了关于android实现一键锁屏和一键卸载的相关内容,分享出来供大家参考学习,这两个功能也是大家在开发中会遇到的两个需求,下面话不多说了,来一起看看详细的介绍吧。
一.设备管理器操作步骤
1.创建类DeviceAdminReceiver的子类
如:com.itheima62.lockscreen.DeviceAdminSample
2.在清单文件中配置广播接收者
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<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.配置字符串相关信息
1
2
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文件,内容:
1
2
3
4
5
6
7
8
9
10
11
12
|
< 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.在代码中创建设备管理器和组件
1
2
|
dpm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);
ComponentName who = new ComponentName( this , DeviceAdminSample. class );
|
6.写功能
1
|
dpm.lockNow();一键锁屏
|
二.源代码
创建类DeviceAdminReceiver的子类
1
2
3
4
5
6
|
package com.example.suoping;
import android.app.admin.DeviceAdminReceiver;
public class DeviceAdminSample extends DeviceAdminReceiver
{
}
|
MainActivity
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
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
1
2
3
4
5
6
|
< 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
1
2
3
4
5
6
7
|
< 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
<? 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
1
2
3
4
5
6
7
8
9
10
11
12
|
< 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
1
2
3
4
5
6
7
8
|
< 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