版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/mingyue_1128/article/details/33726515

转载请标明出处http://blog.csdn.net/mingyue_1128

一、首先要创建一个Service保证Service一直开启。同一时候不被一键清理掉。

二、屏蔽掉系统的锁屏

三、创建锁屏的Activity,在Activity中屏蔽掉back,menu,home键

四、保证自己的进程不在近期任务中出现

一、创建一个Service名字为LockService

public class LockService extends Service{

	private KeyguardManager km;
private KeyguardLock kk;
private BroadcastReceiver broadcastReceiver=new BroadcastReceiver() { @Override
public void onReceive(Context context, Intent arg1) {
Log.e("-----能够跳到锁屏界面--------", "---------");
Intent intent=new Intent(context,LockActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
};
@Override
public IBinder onBind(Intent arg0) { return null;
} @Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId); //服务里面收到关闭屏幕的动作就发送广播
IntentFilter iFilter=new IntentFilter(Intent.ACTION_SCREEN_OFF); this.registerReceiver(broadcastReceiver, iFilter); } @Override
public void onCreate() {
super.onCreate();
//屏蔽掉系统的锁屏
km=(KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
kk=km.newKeyguardLock("");
kk.disableKeyguard(); } @Override
public void onDestroy() { super.onDestroy();
} }

在Service中与他合作的另一个广播,当监听到屏幕关的时候,service就会发送广播,使屏幕开的时候为自己锁屏界面

三、锁屏界面中屏蔽掉menu,home,back

public class LockActivity extends Activity{
private static final int FLAG_HOMEKEY_DISPATCHED = 0x80000000;
private Button btn_open;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.getWindow().setFlags(FLAG_HOMEKEY_DISPATCHED, FLAG_HOMEKEY_DISPATCHED);//关键代码
setContentView(R.layout.activity_main);
//解锁的button
btn_open=(Button) findViewById(R.id.open); btn_open.setOnClickListener(new OnClickListener() { @Override
public void onClick(View arg0) {
finish();
}
});
}
@SuppressWarnings("static-access")
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode==event.KEYCODE_BACK){
return true;
}
if(keyCode==event. KEYCODE_HOME){
return true;
}
if(keyCode == KeyEvent.KEYCODE_MENU) {//MENU键
//监控/拦截菜单键
return true;
}
return super.onKeyDown(keyCode, event);
}
}

保证自己的锁屏程序不在近期进程中出现。仅仅须要在注冊锁屏界面的Activity时。加入一个属性android:excludeFromRecents="true",例如以下

       <activity
android:name="com.mm.wallpaper.LockActivity"
android:launchMode="singleInstance"
android:excludeFromRecents="true">
<intent-filter> <category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT" /> </intent-filter>
</activity>

四、我们须要看一下主界面怎么处理

public class MainActivity extends Activity {
MyBroadcast receiveBroadCast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//注冊广播
receiveBroadCast = new MyBroadcast();
IntentFilter filter = new IntentFilter();
filter.addAction("action"); // 仅仅有持有同样的action的接受者才干接收此广播
registerReceiver(receiveBroadCast, filter); //发送广播
Intent intent=new Intent();
intent.setAction("action");
this.sendBroadcast(intent); }
public class MyBroadcast extends BroadcastReceiver{ @Override
public void onReceive(Context context, Intent intent) { KeyguardManager km = (KeyguardManager)context.getSystemService(Context.KEYGUARD_SERVICE); KeyguardLock kk = km.newKeyguardLock("");
kk.disableKeyguard(); //開始服务
Intent service=new Intent();
service.setClass(context,LockService.class);//稍后再定义
context.startService(service);
} }
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregisterReceiver(receiveBroadCast);
} }

在这里我们须要注冊一个广播保证服务的开启

在配置清单中MainActivity须要多一个属性来保证程序始终在

   <category android:name="android.intent.category.HOME"/>

整个的流程大概如此。希望对想做解锁软件的朋友有所帮助。

android锁屏软件制作的更多相关文章

  1. Android 锁屏软件MemoryDebris测试报告

    目 录 项目基本信息 第1章         引言 1.1        编写目的 1.2        项目背景 1.3        参考资料 1.4        术语和缩略语 第2章      ...

  2. Android锁屏软件

    需求描述:锁屏软件就是点击应用然后直接锁屏,不会弹出任何界面 设计思路:应用启动以后通过getSystemService获取系统的服务,调用安卓系统的DevicePolicyManager和Compo ...

  3. 自选项目--手机锁屏软件--NABC分析

    N(Need 需求) 关键字:利用碎片时间加强对想记的事物的记忆.备忘.一般来说,锁屏目的大致有三点: 1.保护手机隐私 2.防止误操作手机 3.在不关闭系统软件的情况下节省电量 对于市面上已有的锁屏 ...

  4. android锁屏和finish()后activity生命周期的变化

    之前写了一个一键锁屏软件,有个朋友用了后发现了问题,所以昨天研究了一个activity在锁屏后的生命周期变化.如下: 锁屏分为两个步骤,先是锁定屏幕,再是黑屏 onCreate(在该方法里锁屏)--- ...

  5. win32进阶之路:给锁屏软件增加一个超链接按钮

    前言: windows下一切皆窗口,我们看到的超链接也是窗口,效果图如下: 鼠标放在赵大哥博客园主页和关于软件两个按钮上,按钮上的字体会从绿色变成红色,同时鼠标指针变为手型,点下鼠标左键就会调用默认浏 ...

  6. Android 锁屏状态/锁屏密码等相关

    Android 锁屏状态/锁屏密码等相关 开始是在设备管理器方面找方法,但一直不行,可能在公司系统组同事的帮助下,知道KeyguardManager这个类 /** * 当前系统锁屏是否有密码 * @p ...

  7. [Android] Android 锁屏实现与总结 (三)

    上接: Android 锁屏实现与总结 (二) 系列文章链接如下: [Android] Android 锁屏实现与总结 (一) [Android] Android 锁屏实现与总结 (二) [Andro ...

  8. [Android] Android 锁屏实现与总结 (二)

    上接: [Android] Android 锁屏实现与总结 (一) 系列文章链接如下: [Android] Android 锁屏实现与总结 (一) [Android] Android 锁屏实现与总结 ...

  9. [Android] Android 锁屏实现与总结 (一)

    实现锁屏的方式有多种(锁屏应用.悬浮窗.普通Activity伪造锁屏等等).但国内比较主流并且被广泛应用的Activity伪造锁屏方式. 实例演示图片如下: 系列文章链接如下: [Android] A ...

随机推荐

  1. 「BZOJ1537」Aut – The Bus(变形Dp+线段树/树状数组 最优值维护)

    网格图给予我的第一反应就是一个状态 f[i][j] 表示走到第 (i,j) 这个位置的最大价值. 由于只能往下或往右走转移就变得显然了: f[i][j]=max{f[i-1][j], f[i][j-1 ...

  2. [WPF自定义控件]Window(窗体)的UI元素及行为

    1. 前言 本来打算写一篇<自定义Window>的文章,但写着写着发觉内容太多,所以还是把使用WindowChrome自定义Window需要用到的部分基础知识独立出来,于是就形成了这篇文章 ...

  3. ArrayList练习之存储自定义对象并遍历

    新建一个Student.java类 Student.java /* * 这是一个学生类 */ public class Student { private String name; private i ...

  4. FTS5与DIY

    此文已由作者王荣涛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. FTS5简介 前文已经介绍了FTS3/FTS4,本文着重介绍它们的继任者FTS5. FTS5是在SQLite ...

  5. 大数据学习——ip改成固定ip

    vi /etc/sysconfig/network-scripts/ifcfg-eth0 修改BOOTPROTO为static 添加IPADDR=192.168.74.100 添加NETMASK=25 ...

  6. Leetcode 264.丑数II

    丑数II 编写一个程序,找出第 n 个丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10 ...

  7. 理工个人积分赛最后一场(FZU)G - 五子棋,坑爹的大水题~~

    Problem 1490 五子棋 Time Limit: 1000 mSec Memory Limit : 32768 KB  Problem Description 五子棋是起源于中国古代的传统黑白 ...

  8. Linux 磁盘测速

    读: time dd if=/dev/zero of=/test.dbf bs=8k count=1000000 写: time dd if=/dev/zero of=/var/test bs=8k ...

  9. devstack脚本安装Openstack总结(转载)

    1:vmware 基本设置 我采用的vmware workstation 8.0的版本,其他版本应该都是没问题.我是把虚拟机放在NAT的网络. 虚拟机就单块网卡就可以. 如果你希望可以在dashboa ...

  10. 字符串匹配(codevs 1404)

    题目描述 Description 给你两个串A,B,可以得到从A的任意位开始的子串和B匹配的长度.给定K个询问,对于每个询问给定一个x,求出匹配长度恰为x的位置有多少个.N,M,K<=20000 ...