android锁屏软件制作
版权声明:本文为博主原创文章,未经博主同意不得转载。 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锁屏软件制作的更多相关文章
- Android 锁屏软件MemoryDebris测试报告
目 录 项目基本信息 第1章 引言 1.1 编写目的 1.2 项目背景 1.3 参考资料 1.4 术语和缩略语 第2章 ...
- Android锁屏软件
需求描述:锁屏软件就是点击应用然后直接锁屏,不会弹出任何界面 设计思路:应用启动以后通过getSystemService获取系统的服务,调用安卓系统的DevicePolicyManager和Compo ...
- 自选项目--手机锁屏软件--NABC分析
N(Need 需求) 关键字:利用碎片时间加强对想记的事物的记忆.备忘.一般来说,锁屏目的大致有三点: 1.保护手机隐私 2.防止误操作手机 3.在不关闭系统软件的情况下节省电量 对于市面上已有的锁屏 ...
- android锁屏和finish()后activity生命周期的变化
之前写了一个一键锁屏软件,有个朋友用了后发现了问题,所以昨天研究了一个activity在锁屏后的生命周期变化.如下: 锁屏分为两个步骤,先是锁定屏幕,再是黑屏 onCreate(在该方法里锁屏)--- ...
- win32进阶之路:给锁屏软件增加一个超链接按钮
前言: windows下一切皆窗口,我们看到的超链接也是窗口,效果图如下: 鼠标放在赵大哥博客园主页和关于软件两个按钮上,按钮上的字体会从绿色变成红色,同时鼠标指针变为手型,点下鼠标左键就会调用默认浏 ...
- Android 锁屏状态/锁屏密码等相关
Android 锁屏状态/锁屏密码等相关 开始是在设备管理器方面找方法,但一直不行,可能在公司系统组同事的帮助下,知道KeyguardManager这个类 /** * 当前系统锁屏是否有密码 * @p ...
- [Android] Android 锁屏实现与总结 (三)
上接: Android 锁屏实现与总结 (二) 系列文章链接如下: [Android] Android 锁屏实现与总结 (一) [Android] Android 锁屏实现与总结 (二) [Andro ...
- [Android] Android 锁屏实现与总结 (二)
上接: [Android] Android 锁屏实现与总结 (一) 系列文章链接如下: [Android] Android 锁屏实现与总结 (一) [Android] Android 锁屏实现与总结 ...
- [Android] Android 锁屏实现与总结 (一)
实现锁屏的方式有多种(锁屏应用.悬浮窗.普通Activity伪造锁屏等等).但国内比较主流并且被广泛应用的Activity伪造锁屏方式. 实例演示图片如下: 系列文章链接如下: [Android] A ...
随机推荐
- [MVC]在练习MusicStore过程中问题实录
1,问题描述:MVC在添加基于框架的控制器时,出现无法检索xxx的元数据 参考目录:http://www.cnblogs.com/0banana0/p/4050793.html#undefined 解 ...
- JSP中使用<c:forEach>标签循环遍历元素
转载:http://blog.csdn.net/hero_cheng/article/details/51924577
- 图的最小生成树——Prim算法
Prim算法 Prim算法求最小生成树是采取蓝白点的思想,白点代表已经加入最小生成树的点,蓝点表示未加入最小生成树的点. 进行n次循环,每次循环把一个蓝点变为白点,该蓝点应该是与白点相连的最小边权的是 ...
- PTA 04-树5 Root of AVL Tree (25分)
题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/668 5-6 Root of AVL Tree (25分) An AVL tree ...
- K-means算法-聚类
算法过程如下: 1)从N个文档随机选取K个文档作为质心 2)对剩余的每个文档测量其到每个质心的距离,并把它归到最近的质心的类 3)重新计算已经得到的个各类的质心 4)迭代2~3步直至新的质心与原质心相 ...
- [Tyvj1939] 玉蟾宫(单调栈)
传送门 题目 Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地.这片土地被分成N*M个格子,每个格子里写 ...
- hdu 1824 2-sat问题(判断)
/* 题意:u,v,w队长,队员,队长留下两个队员可以回家,两个队员留下,队长回家 2-sat问题,把两个队员看成一个整体就变成一个简单2-sat问题了 */ #include<stdio.h& ...
- VK Cup 2015 - Qualification Round 1 A. Reposts [ dp DAG上最长路 ]
传送门 A. Reposts time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- 为什么zookeeper的节点配置的个数必须是奇数个?
zookeeper有这样一个特性:集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的.也就是说如果有2个zookeeper,那么只要有1个死了zookeeper就不能用了,因为1没有过半, ...
- Codeforces 653B Bear and Compressing【DFS】
题目链接: http://codeforces.com/problemset/problem/653/B 题意: 要求你构造一个长度为n的字符串使得通过使用m个操作,最终获得字符a.已知第i个操作将字 ...