使用系统自带ScreenLock来保护你的App

如果你的App需要验证密码,我们可以使用系统的ScreenLock来进行验证,这样做的好处是我们的用户不必使用多个不同的密码来验证身份,OK,下面我们来看看如何使用系统锁屏:

先来介绍几个Framework里面的锁屏相关的类:

LockPatternUtils:这里提供了锁屏的一些帮助类,我们最需要使用的是这样一个方法:

public boolean isSecure() {
        long mode = getKeyguardStoredPasswordQuality();
        final boolean isPattern = mode == DevicePolicyManager.PASSWORD_QUALITY_SOMETHING;
        final boolean isPassword = mode == DevicePolicyManager.PASSWORD_QUALITY_NUMERIC
                || mode == DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC
                || mode == DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC
                || mode == DevicePolicyManager.PASSWORD_QUALITY_COMPLEX;
        final boolean secure = isPattern && isLockPatternEnabled() && savedPatternExists()
                || isPassword && savedPasswordExists();
        return secure;
    }

这个方法用来检测当前系统是否已经使用了锁屏。

ChooseLockGeneric:这个类是我们设置锁屏的主要类:

我们通过调用这个类来引导用户增加一个系统锁屏:

                Intent intent = new Intent("/");
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                ComponentName cm = new ComponentName("com.android.settings","com.android.settings.ChooseLockGenericForKS");
                intent.setComponent(cm);
                startActivity(intent);

那么如何进行锁屏的验证呢,我们可以使用这样一个方法:

private boolean runKeyguardConfirmation(int request) {
        Resources res = getActivity().getResources();
        return new ChooseLockSettingsHelper(getActivity(), this)
                .launchConfirmationActivity(request,
	                res.getText(R.string.master_clear_gesture_prompt),
	                res.getText(R.string.master_clear_gesture_explanation));
    }

我们需要在调用的Activity中使用onActivityResult来获取返回值:

if (requestCode == 55 && resultCode == Activity.RESULT_OK) {

55是我们的request code。

通过以上方法,我们就可以在我们的App中添加验证、增加系统锁屏验证了。

以上。

时间: 2024-10-10 14:04:50

使用系统自带ScreenLock来保护你的App的相关文章

MAC EI Capitan上更新系统自带SVN版本号(关闭SIP方能sudo rm)

继昨晚之后.决定更新系统自带的svn.自带的svn版本号是1.7.看官网svn:http://www.wandisco.com/subversion/download#osx 最新版本号是1.9.13,决定升级下. 没想到由于EI Capitan SIP的问题折腾了好大一会.本来不想记录的.但由于SIP这个蛋疼的玩意决定还是记录下.过程例如以下: 1.which svn 找到系统自带的svn路径.应该在/usr/bin/svn 然后在/usr/bin文件夹下,ls svn*|xargs sudo

提取了Windows 10 Build 9901 系统自带 高清分辨率壁纸

提取了Windows 10 Build 9901  系统自带 高清分辨率壁纸 下载地址为:http://www.400gb.com/file/81555894

Mac系统自带的Python版本切换

由于需要安装各种python包,所以需要在Mac中端输入各种pip install xxxxxx的命令. 问题:直接运行pip install xxxxxx后,包会安装到系统自带的2.7版本的Python中,而在用高级版本的Python时会出现仍然缺失这个包的现象. 解决:不用删除系统自带的Python2.7的版本(有文章说删除以后系统中由该版本支持的部分会出错),只要在安装时输入pip3 install xxxxx就行了,同理使用python3代替python指令,这样一来,python代表系

Dynamics 2015 数据管理 之 如何批量导入数据到 正式区(二)系统自带示例数据 安装及教学

Dynamics 2015系统自带了一些示例数据,大家可以导入后,用于模拟测试,省得大家输入的时间了, 现分享一下导入的方法,很简单的技巧. 进入方式: 在 设置 ---- 数据管理 菜单进入后,第4行,第二个. 可以在导入中看要导入的交易. 好了,是不是方便大家测试了啊,谢谢.

(八十一)利用系统自带App来实现导航

利用系统的地图App进行导航,只需要传入起点和终点.启动参数,调用MKMapItem的类方法openMapWithItems:launchOptions:来实现定位,调用此方法后会打开系统的地图App. 下面我们来看看这个方法: + (BOOL)openMapsWithItems:(NSArray *)mapItems launchOptions:(NSDictionary *)launchOptions; ①第一个参数是一个MapItem数组,每个MapItem中可以包含一个地标,用两个Map

Ios二维码扫描(系统自带的二维码扫描)

Ios二维码扫描 这里给大家介绍的时如何使用系统自带的二维码扫描方法和一些简单的动画! 操作步骤: 1).首先你需要搭建UI界面如图:下图我用了俩个imageview和一个label 2).你需要在你当前的控制器中导入 #import <AVFoundation/AVFoundation.h> <AVCaptureMetadataOutputObjectsDelegate>代理 3).在@interface中定义 @property (nonatomic,strong)AVCapt

PB调用系统自带的DLL 实现MD5

适用环境:powerbuilder 10.0以后的版本  window server2003以后的测试可用 PB也可以调用系统自带的DLL 实现MD5 其中md5file对大附件的处理速度也比第三方组件快一些 这里可以去下载附件 //调用样例: u_derek_md5 lu_md5 lu_md5=create u_derek_md5 string ls_text="123" string ls_result,ls_ret string ls_filepath="C:\1.tx

Ecmall系统自带的分页功能

在Ecmall的二次开发中,分页是必不可少的.这个系统已经自带了分页功能,下面来看看如何使用这个分页. 下面是一个自定义的类,用于查看订单的详细情况.关键在于get_order_data()这个方法,分页的使用也在这个方法的内部了.应该有的注释都有了,应该会比较容易懂,我不就多说了. <?php define('NUM_PER_PAGE', 15); // 每页显示数量 class NowaMagicApp extends MallbaseApp { public function index(

Win10系统自带输入法的人机交互设计

过了寒假回校以后,我的电脑重装了系统,为了提升系统运行的速度,自己装了一个内存条同时对硬盘进行了重新的分区,对电脑内的文件也进行了重新的整理,电脑的运行速度提高了很多.老多同学都说win10系统好用,因此,我也把电脑从原来的win7系统改成了win10,老师上完人机界面交互课程后,让我们评价一下当下正在使用的一款输入法,正好赶上我有话可说,我就来评价评价win10系统自带的收入法吧. 以前的win7系统上我下载了一个搜狗输入法,用起来感觉还不错,但是装完win10系统以后,我却没有再使用其他的输