首页 > 其他分享 >Android-引导用户指纹录入

Android-引导用户指纹录入

时间:2023-06-22 14:33:27浏览次数:39  
标签:String 指纹 private 录入 Android com android


根据不同的手机,跳转到指纹录入界面,如果没有检测到手机的品牌,就提醒用户手动去指纹录入:

首先描述手机信息检测对象,PhoneInfoCheck.java:

package com.esandinfo;

import android.app.AlertDialog;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
import android.widget.Toast;

import com.esandinfo.utils.MyLog;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 描述手机信息的检测对象
 */
public class PhoneInfoCheck {

    private final String SONY = "sony";
    private final String OPPO = "oppo";
    private final String HUAWEI = "huawei";
    private final String HONOR = "honor";
    private final String KNT = "knt";

    private static PhoneInfoCheck instance = null;

    public static synchronized PhoneInfoCheck getInstance(Context context, String brand){
        if (null == instance)
            instance = new PhoneInfoCheck(context, brand);
        return instance;
    }

    private Context context;
    private String brand;

    private PhoneInfoCheck(Context context, String brand) {
        this.context = context;
        this.brand = brand;
    }

    /**
     * 跳转到指纹页面 或 通知用户去指纹录入
     */
    public void startFingerprint() {

        String pcgName = null;
        String clsName = null;

        if (compareTextSame(SONY)){
            pcgName = "com.android.settings";
            clsName = "com.android.settings.Settings$FingerprintEnrollSuggestionActivity";
        } else if (compareTextSame(OPPO)) {
            pcgName = "com.coloros.fingerprint";
            clsName = "com.coloros.fingerprint.FingerLockActivity";
        } else if (compareTextSame(HUAWEI)) {
            pcgName = "com.android.settings";
            clsName = "com.android.settings.fingerprint.FingerprintSettingsActivity";
        } else if (compareTextSame(HONOR)) {
            pcgName = "com.android.settings";
            clsName = "com.android.settings.fingerprint.FingerprintSettingsActivity";
        }
        // TODO 后续机型会继续加入的 (Deliliu)
        // ....
        else {
            // 如果以上判断没有符合该机型,那就跳转到设置界面,让用户自己设置吧
            // Toast.makeText(context, "请到设置中,找到指纹录入,进行指纹录入操作", Toast.LENGTH_LONG).show();
            new AlertDialog.Builder(context)
                    .setTitle("指纹录入")
                    .setMessage("请到设置中,找到指纹录入,进行指纹录入操作")
                    .setPositiveButton("好的,我去录入指纹", null)
                    .show();

            // 跳转到Settings页面的Intent
            /*pcgName = "com.android.settings";
            clsName = "com.android.settings.Settings";*/
        }

        if (!TextUtils.isEmpty(pcgName) && !TextUtils.isEmpty(clsName)) {

            Intent intent = new Intent();
            ComponentName componentName = new ComponentName(pcgName, clsName);
            intent.setAction(Intent.ACTION_VIEW);
            intent.setComponent(componentName);
            context.startActivity(intent);
        }
    }

    /**
     * 获得当前手机品牌
     * @return 例如:HONOR
     */
    private String getBrand() {
        MyLog.debug("PhoneInfoCheck Board:" + android.os.Build.BRAND + " brand:" + brand);
        return this.brand;
    }

    /**
     * 对比两个字符串,并且比较字符串是否包含在其中的,并且忽略大小写
     * @param value
     * @return
     */
    private boolean compareTextSame(String value) {
        return value.toUpperCase().indexOf(getBrand().toUpperCase()) >= 0 ;
    }

    @Deprecated
    public static void main(String[] args) {
        String str = "java JavA ABC";
        Pattern test_ = Pattern.compile("java",Pattern.CASE_INSENSITIVE);
        Matcher result_ = test_.matcher(str);

        // str = result_.replaceAll("Perl6");

        System.out.println(str);
        System.out.println(result_);

        // -----------------------------------

        String str1 = "abcdefghijklmnabc";
        String str2 = "HiJK";
        // 查找是否存在指定的字符
        System.out.println(str2.indexOf(str1));
        // 忽略大小写查找
        System.out.println("HONOR".toUpperCase().indexOf("HONOR".toUpperCase()) >= 0);

    }
}

调用—>>PhoneInfoCheck对象,测试:

/**
     * 引导指纹录入
     * @param view
     */
    public void startFingerprint(View view) {
        final String BRAND = android.os.Build.BRAND;
        MyLog.debug("BRAND:" + BRAND);
        PhoneInfoCheck.getInstance(this, BRAND).startFingerprint();
    }

布局的Button

<Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="引导指纹录入"
            android:onClick="startFingerprint"
            />

日志打印:

PhoneInfoCheck Board:HONOR brand:HONOR

Honor V8 手机:

Android-引导用户指纹录入_System

以下, 以 honor 手机测试为例:
执行结果:
点击按钮:

Android-引导用户指纹录入_java_02

就跳转到了 honor 手机的指纹验证界面了:

Android-引导用户指纹录入_java_03

然后输入密码,点击下一步:

Android-引导用户指纹录入_java_04

然后就进入 honor 手机的 指纹管理 界面了,可以录入指纹了:

Android-引导用户指纹录入_java_05


欢迎关注专一Android,更多知识干货,会持续更新的


标签:String,指纹,private,录入,Android,com,android
From: https://blog.51cto.com/u_16163510/6534871

相关文章

  • Android—MySQLiteOpenHelper源码解读
    MySQLiteOpenHelper:直接放上源码,解读在注释里packagecom.esandinfo;importandroid.content.Context;importandroid.database.sqlite.SQLiteDatabase;importandroid.database.sqlite.SQLiteOpenHelper;importandroid.util.Log;publicclassMySQLiteOpenHelperextends......
  • 腾讯Android岗三面:EventBus 发送的消息,如何做到线程切换?
    一.前言EventBus是一个基于观察者模式的事件订阅/发布框架,利用EventBus可以在不同模块之间,实现低耦合的消息通信。EventBus因为其使用简单且稳定,被广泛应用在一些生产项目中。通常我们就是使用EventBus分发一些消息给消息的订阅者,除此之外我们还可以通过EventBus将消息传......
  • Android:教你如何避免解决WebView内存泄漏
    一直听说WebView使用不当容易造成内存泄漏,网上有很多针对内存泄漏的解决方案,比较多的是在Activity.onDestroy的时候将WebView从View树中移除,然后再调用WebView.destroy方法:overridefunonDestroy(){valparent=webView?.parentif(parentisViewGroup){......
  • 【建议私藏】Android进阶开发面试必背300题,都在这里了~
    Android的技术面试的本质与考试无差,许多知识点你可能之前没有涉及,之后也不会用到,但面试官提问时,你一定得会。如果你只是精专于之前业务中的内容,那无疑所掌握的知识点会非常会非常片面,也会极大的限制你的发展性,减少你可选择的选项。Android开发面试必问经典题目Handler相关知识,面试......
  • 最新Android音视频开发学习指南,建立自己的技术护城河
    我们常说音视频是程序员小众领域,但其实音视频技术在日常生活中随处可见:直播中要保证在各种网络状况下实现超低价延时、降低卡顿率,就需要用到音视频中的RTC和直播技术;上百人的视频会议若要保证流畅度和清晰的画质就要用到RTC和转码合流服务等技术…Android音视频开发进阶指南目......
  • Android模仿微博的LazyFragment懒加载
    本文会从头开始一步一步带你去写一个LazyFragment,根据写的过程中一步一步记录,你也可以自己试一试,跟着一起写写。最后也根据遇到的问题去完善了,网上搜的都是不完善的,还是自己写一个吧!懒加载是在加载啥?这个问题显得很愚蠢。但是想一下,懒加载到底是加载数据和视图,还是数据呢??(一开始我也......
  • 【干货分享】全套Android学习笔记+最新大厂面试真题合集,打包领取
    笔者是一名普通的软件开发人员,一向不喜欢高高在上或者晦涩难懂的理论。我认为知识的本身也应该是通俗易懂的,用晦涩难懂的东西去描述,是对人类进步的阻碍,是知识垄断。笔者希望此系列教程能够以工程实现为出发点和落脚点,简化理论知识,化繁为简地解析Android相关知识点,为各位读者成长为......
  • 【Android】iOS开发中xconfig和script脚本的使用
    利用Xcode进行开发时需要进行很多buildsetting的设置以便能让项目按照设置的进行编译,同时有时候需要在编译时利用script脚本进行一些设置,本文主要介绍xconfig文件和script脚本在Xcode开发中使用。作者:MambaYongXcode编译在使用xconfig时有几个关于Xcode的概念是需要理解的,这里我进......
  • Android AIDL 跨进程通信超详版
    来了新公司,公司项目里用了很多的独立进程的服务与他们之间存在了很多跨进程的通信。之前有很长一段时间没有实际去做跨进程通信AIDL了,查阅了一些资料和文章看了些Demo把温习的心路历程介绍一下。来模拟一个ktv播控系统(client)控制大屏上的歌曲的播放、暂停动作KtvAIDLClientK......
  • Android13(T) 的Target适配问题总结
    最近在做Android13(T)的Target适配,整理了适配过程中遇到的问题分以下三部分:影响所有应用的变更(包含target33),只影响TargetSdkVersion=33的变更,其他更改(新增或者改善的功能).1.影响所有应用的变更1.1必须要适配此项1.1.1通知的运行时权限Android13中引入了一种新的......