IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> APP Security:Android中的指纹识别,android适配器ui -> 正文阅读

[移动开发]APP Security:Android中的指纹识别,android适配器ui

<Button

android:id="@+id/btn_activity_main_finger"

android:layout_width=“match_parent”

android:layout_height=“wrap_content”

android:layout_alignParentStart=“true”

android:layout_below="@+id/textView"

android:layout_marginTop=“20dp”

android:text=“指纹识别” />

这是一个简易的指纹验证界面,如下图所示:

在这里插入图片描述

接下来创建一个简单的指纹验证成功之后跳转的界面_success.xml_,代码如下:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:gravity=“center”

android:orientation=“vertical”

<TextView

android:id="@+id/textView"

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:text=“Welcome!”

android:textSize=“22sp” />

验证成功的界面如下图所示:

在这里插入图片描述

然后我们需要新建一个验证指纹的Activity,我这里新建一个_FingerPrintActivity_类,其中_onCreate_方法中代码如下,当点击主界面的指纹识别按钮后,首先会进行指纹逻辑判断,若成功,则开启指纹监听进行指纹验证:

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

manager = (FingerprintManager) this.getSystemService(Context.FINGERPRINT_SERVICE);

mKeyManager = (KeyguardManager) this.getSystemService(Context.KEYGUARD_SERVICE);

Button btn_finger = (Button) findViewById(R.id.btn_activity_main_finger);

btn_finger.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

if (isFingerPrint()) {

Toast.makeText(FingerPrintActivity.this, “请输入指纹”, Toast.LENGTH_LONG).show();

Log(TAG, “keyi”);

startListening(null);

}

}

});

}

判断是否支持指纹逻辑的函数如下:

/**

  • 判断是否支持指纹逻辑

*/

public boolean isFingerPrint() {

//判断是否具有权限

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) {

Toast.makeText(this, “抱歉,您没有指纹识别权限”, Toast.LENGTH_SHORT).show();

return false;

}

Log(TAG, “有指纹权限”);

//判断硬件是否支持指纹识别

if (!manager.isHardwareDetected()) {

Toast.makeText(this, “抱歉,您的不支持指纹识别”, Toast.LENGTH_SHORT).show();

return false;

}

Log(TAG, “支持指纹识别”);

//判断 是否开启锁屏密码

if (!mKeyManager.isKeyguardSecure()) {

Toast.makeText(this, “没有开启锁屏密码”, Toast.LENGTH_SHORT).show();

return false;

}

Log(TAG, “已开启锁屏密码”);

//判断是否有指纹录入

if (!manager.hasEnrolledFingerprints()) {

Toast.makeText(this, “抱歉,您没有录入指纹”, Toast.LENGTH_SHORT).show();

return false;

}

Log(TAG, “已录入指纹”);

return true;

}

如果满足进行指纹验证条件,则开启指纹识别监听,authenticate()方法接收五个参数:

1.第一个参数是CryptoObject对象,传入Cipher对象就行;

2.第二个参数是CancellationSignal对象,可以用它来取消指纹认证操作;

3.第三个参数是可选参数,官方的建议是直接传0就可以;

4.第四个参数用于接收指纹认证的回调方法,有四个回调方法;

5.第五个参数用于指定处理回调的Handler,这里直接传null表示回调到主线程;

/**

  • 开启指纹识别监听

*/

public void startListening(FingerprintManager.CryptoObject cryptoObject) {

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) {

Toast.makeText(this, “抱歉,您没有指纹识别权限”, Toast.LENGTH_SHORT).show();

return;

}

manager.authenticate(cryptoObject, mCancellationSignal, 0, mSelfCancelled, null);

}

四个回调方法函数如下,其主要作用在代码中已经注释:

CancellationSignal mCancellationSignal = new CancellationSignal();

//回调方法

FingerprintManager.AuthenticationCallback mSelfCancelled = new FingerprintManager.AuthenticationCallback() {

/**

  • 处理用户点击取消了指纹验证的逻辑

*/

@Override

public void onAuthenticationError(int errorCode, CharSequence errString) {

//在多次指纹密码验证错误后,进入此方法;并且在短时间内不能调用指纹验证

Toast.makeText(FingerPrintActivity.this, errString, Toast.LENGTH_SHORT).show();

showAuthenticationScreen();

}

/**

  • 处理授权帮助的提示

*/

@Override

public void onAuthenticationHelp(int helpCode, CharSequence helpString) {

Toast.makeText(FingerPrintActivity.this, helpString, Toast.LENGTH_SHORT).show();

}

/**

  • 处理授权成功后跳转到主页面

*/

@Override

最后

由于文章篇幅原因,我只把面试题列了出来,详细的答案,我整理成了一份PDF文档,这份文档还包括了还有?高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 ,帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习。

需要的朋友可以私信我【答案】或者点击这里免费领取

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-02-06 13:56:29  更:2022-02-06 13:57:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 14:57:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码