| |
|
开发:
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 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |