android安全问题(二) 程序锁

某些人有时候会有这样一种需求,小A下载了个软件,只是软件中的美女过于诱惑与暴露,所以他不想让 别人知道这是个什么软件,起码不想让别人打开浏览。而这款软件又没有锁,任何人都可以打开,肿么办呢? 如果打开它的时候需要输入密码,那该多好阿!于是,程序锁这种应用就产生了

程序锁不是最近才有 的,很久之前android就有这种apk了

这一期我们来苛刻如何实现程序加锁功能

首先,我们先明 确一下我们要做的程序具有什么功能

1可以选择需要加锁的程序

2可以设置密码

3可以关 闭程序锁

这里作为演示,我们就尽量简化代码

我们先说最关键的部分

最关键的地方在 于:当用户打开一个应用的时候,怎么弹出密码页面?

这里没有什么太好的办法,需要扫描task中的 topActivity

首先,我们先获得运行的task

mActivityManager = (ActivityManager) 

context.getSystemService("activity");
//mActivityManager.getRunningTasks(1);//List<RunningTaskInfo>

getRunningTasks方法 返回一个List,我们来看看这个List是什么
getRunningTasks 写道
Return a list of the tasks that are currently running, with the most recent being first and older ones after in order.
……

返回的List是有序的,第一个是最近的,所以我们取出第一个即可,然后得到此task中的最上 层的Activity

ComponentName topActivity = mActivityManager.getRunningTasks (1).get(0).topActivity;

topActivity居然是ComponentName类型,下面的事情就好办了,获得包名 和类名

ComponentName topActivity = mActivityManager.getRunningTasks(1).get

(0).topActivity;
String packageName = topActivity.getPackageName();
String className = topActivity.getClassName();
Log.v(TAG, "packageName" + packageName);
Log.v(TAG, "className" + className);  

if (testPackageName.equals(packageName)
        && testClassName.equals(className)) {
    Intent intent = new Intent();
    intent.setClassName("com.example.locktest", "com.example.locktest.PasswordActivity");
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    mContext.startActivity(intent);
}

由于我没有选择程序这一步,所以我就固定一个应用做测试,这里选择的是htc的note应用

String testPackageName = "com.htc.notes";
String testClassName = "com.htc.notes.collection.NotesGridViewActivity";

下面我们该想, 这段代码何时执行了

打开一个应用程序,系统不会发送广播,我们无法直接监听,所以这里我们采取 定时扫描的策略

这里只是一个简单的实现,之后我们再讨论优化

我们采取每秒中检查一次task 的方式,这里使用Timer吧,用Handler也一样可以实现

private Timer mTimer;
private void startTimer() {
    if (mTimer == null) {
        mTimer = new Timer();
        LockTask lockTask = new LockTask(this);
        mTimer.schedule(lockTask, 0L, 1000L);
    }
}

到这里,其实我们的关键代码就已经完成了

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索程序
, classname
, 一个
, android程序锁实现
android程序锁开发
android 程序锁、android程序锁实现、android程序锁源码、android5.0程序锁实现、360安全卫士程序锁,以便于您获取更多的相关知识。

时间: 2024-10-30 13:00:59

android安全问题(二) 程序锁的相关文章

android安全问题(三) 钓鱼程序

这个话题是继续android安全问题(二) 程序锁延伸的 之前我已经展示了如何制作程序锁.当打 开指定应用的时候,弹出一个密码页面. 程序锁的话题虽然是和安全相关,但是这应该属于防范的范 围,如果被人恶意利用,那么后果-- 这期我来揭示一下一种钓鱼程序的原理,希望广大用户不要上 当受骗,最主要的是:希望大家意识到安全问 之前我用定时扫描activity的方法来检查打开的页面是 不是我们所需要的页面 ComponentName topActivity = mActivityManager.getR

Android程序锁的实现以及逻辑_Android

本项目是一个比较有趣的项目源码,可以给其他项目加锁,程序锁的原理是一个"看门狗"的服务定时监视顶层activity,如果activity对应的包名是之前上锁的应用程序的,则弹出一个页面要求输入解锁密码. 效果如下: 1.基本思路 ①.创建已加锁应用的数据库(字段:_id,packagename),如果应用已加锁,将加锁应用的包名维护到数据库中 ②.已加锁+未加锁 == 手机中所有应用(AppInfoProvider) 2.已加锁和未加锁的数据适配器 class MyAdapter ex

android手机程序锁如何重复广播重复解锁

问题描述 android手机程序锁如何重复广播重复解锁 求助,现在实现了在我写的应用中给手机中的软件加锁,应用接收到广播之后,打开程序进入程序锁页面后输入密码进入应用,我想问一下,怎么实现解锁后,不停止service的情况下,下次进入这个程序还继续输入密码,重复输入过程,只要我的应用中不给他解锁,他就一直有输入密码页面,我试了一下,输入密码正确后,加锁页面就finish掉后,进入应用,但是他又弹出来了.

Android 开发程序锁应用简单实例_Android

1.基本思路 ①.创建已加锁应用的数据库(字段:_id,packagename),如果应用已加锁,将加锁应用的包名维护到数据库中 ②.已加锁+未加锁 == 手机中所有应用(AppInfoProvider) 2.已加锁和未加锁的数据适配器 class MyAdapter extends BaseAdapter{ private boolean isLock; /** * @param isLock 用于区分已加锁和未加锁应用的标示 true已加锁数据适配器 false未加锁数据适配器 */ pub

Android开发之开门狗在程序锁中的应用实例_Android

本文实例讲述了Android开发之开门狗在程序锁中的应用方法.分享给大家供大家参考,具体如下: protected static final String TAG = "WatchDogService"; private AppLockDao dao; private List<String> lockApps; private ActivityManager am; private Intent lockappintent; @Override public IBinde

Android程序锁的实现以及逻辑

本项目是一个比较有趣的项目源码,可以给其他项目加锁,程序锁的原理是一个"看门狗"的服务定时监视顶层activity,如果activity对应的包名是之前上锁的应用程序的,则弹出一个页面要求输入解锁密码. 效果如下: 1.基本思路 ①.创建已加锁应用的数据库(字段:_id,packagename),如果应用已加锁,将加锁应用的包名维护到数据库中 ②.已加锁+未加锁 == 手机中所有应用(AppInfoProvider) 2.已加锁和未加锁的数据适配器 class MyAdapter ex

!请关注,一个程序锁的小应用

问题描述 看到网上好多应用,有一个比较喜欢,就是程序锁,所以自己也想做一个,现在做了个初始版本,但是好多功能都不靠谱,其中一个最重要的就是当加锁的应用启动或者重新打开的时候弹出提示框,输入密码,现在的做法是定时器监听进程,当监听到加锁应用是弹出提示,成功了,但是输入正确的密码后,由于是进程,所以又弹出提示了,现在考虑正确的做法应该是当应用启动的时候或者重新打开的时候才去弹出提示,在后台运行的时候不弹提示.由于是新手,很多技术都不懂,请帮忙~~~帮忙看用什么方法来监听应用的启动或重启,又或者应用在

qt-Qt For Android编译的程序实在是太大,怎么优化呢,一个基本的apk都有十兆左右了

问题描述 Qt For Android编译的程序实在是太大,怎么优化呢,一个基本的apk都有十兆左右了 Qt For Android编译的程序实在是太大,怎么优化呢,一个基本的apk都有十兆左右了 解决方案 Qt for Android 编译安卓原生可执行程序windows平台开发 QT for Android 应用程序QT for Android HelloWorld.apk!耶 解决方案二: 把必要的库去掉就可以了

android虚拟机里程序一直停止运行

问题描述 android虚拟机里程序一直停止运行 ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=edu.nuist.zhangtong.baiduMap/.LoginActivity } logcat: 01-05 00:06:04.698: D/dalvikvm(1225): Not late-enabling Check