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

首先描述手机信息检测对象,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 手机:

以下, 以 honor 手机测试为例:

执行结果:

点击按钮:

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

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

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

Android-引导用户指纹录入的更多相关文章

  1. 检查Android是否支持指纹识别以及是否已经录入指纹

    原文:检查Android是否支持指纹识别以及是否已经录入指纹 Android M 开始,系统中加入了指纹相关功能. 主要用到的类为:FingerprintManager 只提供三个方法: 返回值 方法 ...

  2. (转载)Android引导界面实现

    Android引导界面实现 Android   2014-07-10 14:47:36 发布 您的评价:       4.0   收藏     3收藏 ViewPager类提供了多界面切换的新效果,是 ...

  3. 【AGC】引导用户购买提升用户留存率

    借助AGC的云数据库.云托管.应用内消息.App Linking等服务,您可以给不同价值用户设置不同的优惠套餐活动,引导用户持续购买,增强用户黏性.判断用户价值,发送营销短信,引导用户参与营销活动,提 ...

  4. 转:Android 判断用户2G/3G/4G移动数据网络

    Android 判断用户2G/3G/4G移动数据网络 在做 Android App 的时候,为了给用户省流量,为了不激起用户的愤怒,为了更好的用户体验,是需要根据用户当前网络情况来做一些调整的,也可以 ...

  5. 【 Jquery插件】引导用户如何操作网站功能的向导

    Joyride是一个jQuery插件,可以利用它来创建一个引导用户如何操作网站功能的向导.通过定义一个操作步骤顺序,这个插件会在需要操作的HTML元素旁边显示一个帮助说明的Tooltips. http ...

  6. Android 判断用户2G/3G/4G移动数据网络

    Android 判断用户2G/3G/4G移动数据网络 在做 Android App 的时候,为了给用户省流量,为了不激起用户的愤怒,为了更好的用户体验,是需要根据用户当前网络情况来做一些调整的,也可以 ...

  7. 【微信小程序开发】使用button标签的open-type="getUserInfo"引导用户去授权

    一. 前言 小程序官方文档,上面说明 > wx.getUserInfo(OBJECT) 注意:此接口有调整,使用该接口将不再出现授权弹窗,请使用 <button open-type=&qu ...

  8. Scanner类完成用户键盘录入

    l  Scanner类 Scanner类是引用数据类型的一种,我们可以使用该类来完成用户键盘录入,获取到录入的数据. Scanner使用步骤: 导包:import java.util.Scanner; ...

  9. Android判断用户的网络类型(2/3/4G、wifi)

    很多时候需要先判断当前用户的网络,才会继续之后的一些处理逻辑.但网络类型获取这一块,我用我自己的的手机调试时遇到一些问题,这里记录一下. 一加手机一代,移动4G 网络,得到的subtype类型值为17 ...

随机推荐

  1. hbase基础建表语句

    在Hadoop目录下的HBASE下执行命令 ./hbase shell 进入hbase环境 创建hbase 数据库表 create "表名", "字段A",&q ...

  2. python相关注册登录方式

    1.使用django自带功能实现登录/退出登录 使用django自带登录功能,前提生成用户(用户注册)使用的是django自带的user,或称models中用户表继承于django自带的user 1. ...

  3. php判断用户是否关注微信公众号

    方法一: <?php     $access_token = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_cr ...

  4. SQL Server 2000服务器安装剖析

    一.情况说明 sql server 2000以前的版本,例如7.0一般不存在多个版本,只有标准版跟桌面版,用户如果不清楚该装什么版本的话,可按安装上的安装先决条件指示安装,一般在WIN2000 服务器 ...

  5. Newtonsoft.Json 你必须知道的一些用法

    最近在做接口开发,对方团队开发了一个Web API 的接口,传输数据的格式是 JSON.当时看到这个东西,感觉很简单,也没想什么,没用多久就完成了我的功能,我完成的功能很简单,就是获取数据,然后把数据 ...

  6. select2插件用法

    1.修改默认查询方法,使其可以根据value查询 this.element.select2({ allowClear: true, matcher: function (term, text, ele ...

  7. 探索未知种族之osg类生物---渲染遍历之裁剪三

    前言 在osgUtil::CullVisitor,我们发现apply函数的重载中,有CullVisitor::apply(Group& node),CullVisitor::apply(Swi ...

  8. java maven compiler设置默认1.8

    方法一: <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupI ...

  9. docker构建镜像

    Docker 提供了两种构建镜像的方法: docker commit 命令Dockerfile 构建文件 示例: Dockerfile FROM golang:1.7.5 #基础镜像 RUN apt- ...

  10. js最实用string(字符串)类型的使用及截取与拼接详解

    var a = '世界上最远的距离不是天涯海角'; 一.通过字符获取位置或通过位置获取字符: //指定位置返回字符console.log(str.charAt(1));console.log(str[ ...