文档章节

一键锁屏

chenruibing
 chenruibing
发布于 2015/06/01 22:02
字数 479
阅读 78
收藏 1

设备策略服务   DevicePolicyManager

要配置特殊的广播接受者

<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"
    tools:context=".MainActivity" >
    
     <Button
        android:onClick="openAdmin"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="开启管理员权限" />

    <Button
        android:onClick="lockscreen"
        android:layout_centerInParent="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="一键锁屏" />
    
    <Button
        android:onClick="uninstall"
        android:layout_alignParentBottom="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="卸载软件" />

</RelativeLayout>



package com.itheima.lockscreen;

import android.app.admin.DeviceAdminReceiver;

/**
 * 特殊的广播接收者
 * @author Administrator
 *
 */
public class MyAdmin extends DeviceAdminReceiver {

}



<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.itheima.lockscreen"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="16" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.itheima.lockscreen.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

        <receiver
            android:name="com.itheima.lockscreen.MyAdmin"
            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>



package com.itheima.lockscreen;

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;
import android.widget.Toast;


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);
		
	}
	/**
	 * 要在设备管理器哪里激活一下,可以用代码激活
	 * 用代码去开启管理员
	 * @param view
	 */
	public void openAdmin(View view){
		//创建一个Intent 
		Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
		//我要激活谁
		ComponentName   mDeviceAdminSample = new ComponentName(this,MyAdmin.class);
		
        intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample);
       //劝说用户开启管理员权限
        intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
               "哥们开启我可以一键锁屏,你的按钮就不会经常失灵");
        startActivity(intent);
	}
	
	/**
	 * 一键锁屏
	 */
	
	public void lockscreen(View view){
		ComponentName   who = new ComponentName(this,MyAdmin.class);
		if(dpm.isAdminActive(who)){
			dpm.lockNow();//锁屏
			dpm.resetPassword("", 0);//设置屏蔽密码 ""就是取消掉密码
			
			//清除Sdcard上的数据
//			dpm.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE);
			//恢复出厂设置
//			dpm.wipeData(0);
		}else{
			Toast.makeText(this, "还没有打开管理员权限", 1).show();
			return ;
		}
	
		
	}
	
	/**
	 * 卸载当前软件
	 */
	
	public void uninstall(View view ){
		
		//1.先清除管理员权限
		ComponentName   mDeviceAdminSample = new ComponentName(this,MyAdmin.class);
		dpm.removeActiveAdmin(mDeviceAdminSample);
		//2.普通应用的卸载
		Intent intent = new Intent();
		intent.setAction("android.intent.action.VIEW");
		intent.addCategory("android.intent.category.DEFAULT");
		intent.setData(Uri.parse("package:"+getPackageName()));
		startActivity(intent);
	}

	

}



© 著作权归作者所有

chenruibing
粉丝 12
博文 203
码字总数 109101
作品 0
潮州
私信 提问
2018年Android的保活方案效果统计

一、常见保活方案 1、监听广播:监听全局的静态广播,比如时间更新的广播、开机广播、解锁屏、网络状态、解锁加锁亮屏暗屏(3.1版本),高版本需要应用开机后运行一次才能监听这些系统广播,...

codeGoogle
2018/10/30
0
0
开发的android如何不加载界面

我想做一个简单的“一键锁屏”应用 做出来了但是每次都要闪屏加载一下res/layout/activity_main.xml 所以导致在手机上点击安装后的“一键锁屏”都会闪一下屏 我把MainActivity.java里的onCre...

殷康
2013/01/17
300
1
160824华为Mate7创建一键锁屏快捷方式

通过电源键锁屏,易导致按键损坏,而下拉栏,又不方便,下第三方程序又过于小题大做,其实,EMUI中是有一键锁屏软件的,可通过ROOT后CUST分区的XML显示隐藏的程序,这里介绍直接调用程序中的子功能,...

yulygo
2016/08/24
0
0
MX4 Pro上实现一键锁屏

前因 前两天入手了一台MX4 Pro。自己拿到真机之后,着实高兴了一阵,立刻把玩了一会。虽然MX4 Pro的小圆圈没了,但是为了指纹传感器,因此这点我忍了。 但是我发现了一个问题:就是原来常按小...

fyales
2015/01/10
960
2
应用保活终极总结(二):Android6.0及以上的保活实践(进程防杀篇)

原作者:“裂缝中的阳光dg”,本文现已重新修订并整理发布,感谢原作者的无私分享。 1、前言 在Android 4.4及以后的系统中,应用能否常驻内存,一直以来都是相当头疼的事情,尤其移动端IM、消...

JackJiang2011
2017/10/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

springboot 403 问题

添加WebAppConfigurer 配置 @Configuration@EnableAutoConfigurationpublic class WebAppConfigurer extends WebMvcConfigurerAdapter { public WebAppConfigurer() { } ......

布袋和尚_爱吃鱼
4分钟前
1
0
Python自动更换壁纸爬虫与tkinter结合

直接上代码 import ctypesimport timeimport requestsimport osfrom threading import Threadfrom tkinter import Tk, Label, Button,Entry,StringVar,messagebox# '放到AppData\Roami......

物种起源-达尔文
4分钟前
1
0
Postgresql Study 笔记

Postgresql 安装 Windows, MAC Install Postgresql 下载地址: https://www.enterprisedb.com/downloads/postgres-postgresql-downloads Linux Install sudo apt-get update sudo apt-get in......

slagga
6分钟前
1
0
layer.open 打开新页面传参问题

如图所示,点击出售,把A页面的数据传到弹框上面,因为弹框比较复杂,所以使用引入一个新页面。 A.html a.js B.html b.js 1、第一种方案 sellInte: function (){ var obj = document.g...

木九天
9分钟前
1
0
沙龙报名 | 区块链数据服务技术应用实践

京东云是国内首家提供区块链数据在线分析服务产品的公司,也是行业内首家对区块链数据服务进行开源的公司。 本次沙龙是京东云BDS开源后,首次在深圳举办线下沙龙,我们将邀请京东云BDS团队核...

京东云技术新知
10分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部