本文为您介绍了Android客户端如何接入活体认证功能。

前提条件

  • 确保您已开通了号码认证服务,并成功创建了对应的认证方案。详情请参见活体认证使用流程
  • 确保您的终端设备已开启SIM卡的4G移动数据(⽀持中国联通、中国移动的3G⽹络,但接⼝耗时会增加)。
  • 支持版本:Android 9.0版本以上支持HTTP配置、com.android.support:support-v4版本高于25.4.0或者vcom.android.support:appcompat-v7版本高于25.4.0。

步骤一:搭建开发环境

  1. 下载并解压Android SDK。登录号码认证产品控制台,选择增强版选项卡,下载并解压Android SDK(号码认证增强版)
  2. 将已解压的SDK包中后缀为aar的文件复制至⼯程的libs⽬录下。
  3. 在App⼯程src包中main AndroidManifest.xml增加Activity声明 。
     <!--联通电信授权页-->  
     <!--如果不需要使用窗口模式,不要使用authsdk_activity_dialog主题,会出现异常动画-->
     <!--如果需要使用authsdk_activity_dialog主题,则screenOrientation一定不能指定明确的方向,
            比如portrait、sensorPortrait,在8.0的系统上不允许窗口模式指定orientation,会发生crash,需要指定为behind,
            然后在授权页的前一个页面指定具体的orientation-->
    <activity
        android:name="com.mobile.auth.gatewayauth.LoginAuthActivity"  
        android:configChanges="orientation|keyboardHidden|screenSize"  
        android:exported="false"
        android:theme="@style/authsdk_activity_dialog"使用弹窗模式必须添加!!!
        android:launchMode="singleTop" />  
    <!--协议页面webview-->  
    <activity  
        android:name="com.mobile.auth.gatewayauth.activity.AuthWebVeiwActivity"  
        android:configChanges="orientation|keyboardHidden|screenSize"  
        android:exported="false"  
        android:launchMode="singleTop" 
        android:screenOrientation="behind" />  
     <!--移动授权页--> 
     <activity  
        android:name="com.cmic.sso.sdk.activity.LoginAuthActivity"  
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:exported="false"  
        android:launchMode="singleTop" />
  4. 集成组件。
    集成以下三个组件:
    • crashshiled-xx-release.aar:自V2.10.0版本之后,SDK内部的crash防护和收集库可以减少SDK的崩溃率,在SDK发生问题时不会影响接入者的App。
      重要 由于uc的crash收集原理与市面常见crash收集库的原理类似,如果App自身原本就有crash收集能力,建议将自身的crash库放在前面加载,uc的crash不会替换原有的crash收集能力,而是会形成链式传递,且只会收集跟号码认证SDK相关的crash,其他的crash信息不会收集。
    • logger-xx-release.aar:SDK内部用于收集日志信息和监控告警的。
    • main-xx-release.aar:SDK内部的一些核心工具类,比如线程池、json解析等。
    具体的集成方法是:将3个aar包放在App下的libs目录下,在build.gradle中写入以下代码。
    implementation 'com.ucweb.wpk:crashsdk-java:3.2.0.1'
    implementation(name:'auth_number_product-2.12.3-log-online-standard-release', ext:'aar')    
    implementation(name:'crashshield-release', ext:'aar')
    implementation(name:'main-release', ext:'aar')    
    implementation(name:'logger-release', ext:'aar')    
  5. AndroidX适配问题。
    由于SDK使用的是support包,所以使用AndroidX需要在gradle.properties中配置。
    android.useAndroidX=true
    android.enableJetifier=true

步骤二:运行Demo

解压Android SDK包后,直接运行Demo工程。

步骤三:完成AndroidManifest.xml设置

  1. 在App AndroidManifest.xml文件中添加必要的权限支持:
    <uses-permission android:name="android.permission.INTERNET" /> <!-- 网络访问 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 检查Wi-Fi网络状态 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 检查网络状态 -->
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <!-- 切换网络通道 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!-- 本地信息缓存 -->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 开关Wi-Fi状态,解决中国内地机型移动网络权限问题需要 -->
  2. HTTP配置。在App AndroidManifest.xml里,给Application节点增加usesCleartextTraffic配置。
     <application
            android:name=".DemoApplication"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme"
            android:usesCleartextTraffic="true">
    说明 目前中国移动提供的个别接口为HTTP请求,对于全局禁用HTTP的项目,需要设置HTTP白名单。以下为运营商HTTP接口域名:demo.aliyundoc.comexample.aliyundoc.com

功能示例

  • 获取认证实例(getInstance)
    /**
     * 获取号码认证服务示例,此实例为单例,获取多次为同一对象
     * @param context Android上下文
     * @param tokenListener需要实现的获取Token回调
     * @return PhoneNumberAuthHelper
     */  
    public static PhoneNumberAuthHelper getInstance(Context context,  TokenResultListener tokenListener)
  • 检查认证环境(checkAuthEnvEnable)
    /**
     * SDK环境检查函数,检查终端是否⽀持号码认证,通过TokenResultListener返回Code
     * type 1:本机号码校验 2: ⼀键登录
     * 600024 终端⽀持认证
     * 600013 系统维护,功能不可⽤
     */
     public void checkEnvAvailable(@IntRange(from = 1, to = 2) int type)
  • 加速活体认证(accelerateLifeBodyVerify)
    /**
     * 加速活体认证
     */
    public void accelerateLifeBodyVerify()
  • 开始活体认证(lifeBodyVerify)
    /**
     * 发起活体认证
     * 由于认证启动是个耗时的的操作,因此在认证信息准备完毕后,
     * 启动认证页面前会有一个UI事件回调,开发者可以根据这个事件进行一些交互操作,避免用户等待。
     * 对应的事件Code是{@link ResultCode#CODE_BI_LIFE_BODY_VERIFY_READY_STARTING}
     * @see AuthUIControlClickListener
     * @param timeoutMills超时时间
     * @param context认证页面启动的上下文,要求必须是{@link Activity},不能是applicationContext
     * @param uiEventListener ui事件回调
     * @param resultListener认证结果回调
     */
    public void lifeBodyVerify(final long timeoutMills,
                                   final Context context,
                                   final AuthUIControlClickListener uiEventListener,
                                   final TokenResultListener resultListener)
  • 加速本机号码校验(accelerateVerify)
    /**
     * 加速本机号码校验
     *
     * @param overdueTimeMills超时时间
     * @param listener结果回调
     */
    public void accelerateVerify(int overdueTime, final PreLoginResultListener listener);
  • 加速授权页弹出(accelerateLoginPage)
    /**
    * 加速授权⻚唤起
    *
    * @param overdueTime预取号有效期
    * @param listener预取号回调
    */
    public void accelerateLoginPage(final int overdueTime, final PreLogin ResultListener listener)
  • ⼀键登录唤起授权页(getLoginToken)
    /**
    * 获取登录Token调起⼀键登录授权⻚⾯,在用户授权后获取⼀键登录的Token
    *
    * @param totalTimeout超时时间(单位:ms)
    */
    public void getLoginToken(final Context context, final int totalTimeout)
  • 退出授权页(quitLoginPage)
    /**
    * 退出授权认证⻚
    * SDK完成回调之后不会关闭授权⻚,需要开发者主动调⽤quitLoginPage退出授权⻚
    */
    public void quitLoginPage()
  • 关闭授权页loading(hideLoginLoading)
    /**
    * 关闭授权⻚loading
    * SDK完成回调之后不会关闭loading,需要开发者主动调⽤hideLoginLoading关闭loading
    */
    public void hideLoginLoading()

其他功能示例

  • 返回默认上⽹卡运营商(getCurrentCarrierName)
    /**
    * 返回默认上⽹卡运营商
    *
    * @return CMCC、CUCC、CTCC
    */
    public String getCurrentCarrierName()
  • 使用XML添加自定义控件至⼀键登录授权页(addAuthRegisterXmlConfig())
    调用一次addAuthRegisterXmlConfig()方法,XML内绘制的⾃定义控件全部添加完成。
    /**
    * 添加⾃定义View
    *
    * @param xmlConfig
    */
    public void addAuthRegisterXmlConfig(AuthRegisterXmlConfig xmlConfig)
    初始化addAuthRegisterXmlConfig类时需要先调静态内部类Builder()⾥⾯的2个⽅法。
    • setLayout():开发者传⼊⾃定义的控件的XML资源ID。
    • AbstractPnsViewDelegate():授权⻚使⽤XML添加⾃定义布局时,可以配合该Delegate类实现XML中相关View的操作,例如事件监听以及动态UI改动等等,当XML对应的View加载后SDK将调⽤ onViewCreated(View)⽅法通知View已经创建OK,此时可以获取XML中的View并进⾏相关事件绑定等操作。
    重要 onViewCreated(View)中返回的View不使用强引用,或用完要及时释放,否则容易造成内存泄漏。
    调用示例:
    mAlicomAuthHelper.addAuthRegisterXmlConfig(new AuthRegisterXmlConfig.Builder()
     .setLayout(R.layout.xxxxxx, new AbstractPnsViewDelegate() {
        @Override public void onViewCreated(View view) {
            //这⾥返回的View,不建议⽤强引⽤,如果要⽤,请及时释放,否则容易造成内存泄漏
            findViewById(R.id.xxxx).setOnClickListener(new View.OnClickListener() {
                @Override public void onClick(View v) {
                    //do something
                }
            });
        }
    })
    .build());
  • 添加代码编写的自定义控件至登录授权页(addAuthRegistViewConfig)
    /**
    * 动态添加控件
    *
    * @param viewID开发者⾃定义控件名称
    * @param viewConfig配置开发者⾃定义控件的控件来源、位置和处理逻辑
    */
    public void addAuthRegistViewConfig(String viewID, AuthRegisterViewConfig viewConfig)
    重要 由于授权页关闭时会清空已注⼊的AuthRegisterViewConfig,所以每次调用getVerifyToken接口请求授权前,都需对AuthRegisterViewConfig进行一次初始化,具体实现请参见Demo⼯程。
    初始化AuthRegisterViewConfig类时需要先调静态内部类Builder()⾥⾯的3个⽅法。
    • setView():开发者传⼊⾃定义的控件,开发者需要提前设置好控件的布局属性,SDK只⽀持RelativeLayout布局。
    • setRootViewId():设置控件的位置,⽬前SDK授权⻚允许在标题栏RootViewId.ROOT_VIEW_ID_TITLE_BAR、授权⻚空⽩处RootViewId.ROOT_VIEW_ID_BODY、授权⻚号码掩码区域RootViewId.ROOT_VIEW_ID_NUMBER 3个位置插⼊开发者控件。
    • setCustomInterface():设置控件事件。
      public Builder setCustomInterface(CustomInterface customInterface)
      调⽤示例:
      mAlicomAuthHelper.addAuthRegistViewConfig("switch_acc_tv", new AuthRegisterViewConfig.Builder()
      .setView(mRL)
      .setRootViewId(AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_BODY)
      .setCustomInterface(new CustomInterface(){
         @Override
          public void onClick(Context context){
          startActivityForResult(new Intent(context, SecondActivity.class), 1234);
          }
       }).build());
    重要 成功获取Token后,需把通过setView()方法注⼊进去的View设置为null。
  • ⼀键登录修改授权页主题(setAuthUIConfig)
     /**
    * 修改授权⻚⾯主题,开发者可以通过此⽅法修改授权⻚⾯主题,需在getLoginToken接⼝之前调⽤
    *
    * @param authUIConfig登录授权⻚UI⾃定义配配置
    */
    public void setAuthUIConfig(AuthUIConfig authUIConfig)
    调⽤示例:
    setAuthUIConfig(new AuthUIConfig.Builder()
    .setLogBtnText("⼀键登录")
    .setLogBtnClickableColor(Color.BLACK)
    .setLogBtnUnClickableColor(Color.BLUE)
    .setLogBtnTextColor(Color.WHITE).setLogoHidden(false)
    .setNavColor(0xff026ED2)
    .setNavText("免密登录")
    .setNavTextColor(Color.WHITE)
    .setNumberColor(Color.WHITE)
    .setNumberSize(28)
    .setNumberColor(0xff000000).create());

SDK回调说明

获取Token回调

  • 回调返回的ret都通过TokenRet tokenRet = JSON.parseObject(ret, TokenRet.class) 解析。
  • 授权⻚唤起成功、获取Token成功都会回调onTokenSuccess⽅法(可以通过返回码来区分)。
  • 获取Token失败会回调onTokenFailed。
示例代码
mTokenListener = new TokenResultListener() {
 @Override
 public void onTokenSuccess(final String ret) {
 MainActivity.this.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                     /**
                     *  setText just show the result for get token
                     *  use ret to verify number
                     */
                    //ResultCode#CODE_START_AUTHPAGE_SUCCESS是授权⻚唤起成功码,若不需要处理,则过滤
                     if (ResultCode.CODE_START_AUTHPAGE_SUCCESS.equals(tokenRet.getCode())) {
                           return;
                    }

                    TokenRet tokenRet = JSON.parseObject(ret, TokenRet.class);
                    if (tokenRet != null) {
                        token = tokenRet.getToken();
                    }
                    mAlicomAuthHelper.quitLoginPage();
                }
            });
        }

        @Override
        public void onTokenFailed(final String ret) {
            MainActivity.this.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    /*
                     *  setText just show the result for get token
                     *  do something when getToken failed, such as use sms verify code.
                     */
                    TokenRet tokenRet = JSON.parseObject(ret, TokenRet.class);
                    mAlicomAuthHelper.quitLoginPage();
                }
            });
        }
    };

加速唤起授权页或加速本机号码校验回调

public interface PreLoginResultListener 
{
/**
* @param vendor返回预取成功运营商
*/
void onTokenSuccess(String vendor);
/**
* @param vendor返回预取失败运营商
* @param ret返回失败原因
*/
void onTokenFailed(String vendor, String ret);
}
示例代码
mPreLoginResultListener = new PreLoginResultListener() 
{
            @Override
            public void onTokenSuccess(final String s) {
                MainActivity.this.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                       /*
                        *  推荐在登录⻚初始化的时候调⽤
                        *  如果没有合适的调⽤时机
                        *  不调⽤此接⼝时,不要App冷启动初始化就调⽤
                        *  不要调⽤完预取号后⻢上调⽤getLoginToken接口
                        *  判断⽤户是否登录,若已登录不要使⽤此接⼝
                        */
                        mRetTV.setText("预取号成功:" + s);
                    }
                });
            }

            @Override
            public void onTokenFailed(final String s, final String s1) {
                /*
                 *  预取号调⽤失败
                 *  不⽤太关注,还是可以直接在⽤户点击"登录"时,调⽤getLoginToken
                 */
                mRetTV.setText("预取号失败:" + s + s1);
            }
        });
     }

控件点击事件回调

授权页控件点击事件通过此回调返回
public interface AuthUIControlClickListener
{
/**
* @param code控件点击事件code
* @param context Android上下⽂
* @param jsonObj点击事件返回的具体内容,不同控件返回的事件内容有所不同
*/
void onClick(String code, Context context, JSONObject jsonObj);
}          
回调示例代码
mAlicomAuthHelper.setUIClickListener(new AuthUIControlClickListener( ) 
{
            @Override
            public void onClick(String code, Context context, JSONObject jsonObj) {
                Log.e("xxxxxx", "OnUIControlClick:code=" + code + ", jsonObj=" + (jsonObj == null ? "" : jsonObj.toJSONString()));
}
});

代码调用顺序

/*
* 1.初始化获取Token实例
*/
mTokenListener = new TokenResultListener() {};

/*
* 2.初始化SDK实例
*/
mAlicomAuthHelper = PhoneNumberAuthHelper.getInstance(context, mTokenListener);
/*
* 3.设置SDK密钥
*/
mAlicomAuthHelper.setAuthSDKInfo();
/*
* 4.检测终端⽹络环境是否⽀持⼀键登录或者号码认证,根据回调结果确定是否可以使⽤⼀键登录功能
*/
mAlicomAuthHelper.checkEnvAvailable(PhoneNumberAuthHelper#SERVICE_TYPE_LOGIN);

/*
* 5.若步骤4返回true,则根据业务情况,调⽤预取号或者⼀键登录接⼝
*   详⻅Demo接⼊⼯程
*/
mAlicomAuthHelper.getLoginToken(context, 5000);

进行取号

  • ⼀键登录获取⼿机号:当您调用getLoginToken接口成功获取Token后,将Token传递至您的服务端,服务端携带Token调用阿里云的GetMobile接口,即可进行最终的取号操作。
  • 本机号码校验结果:当您调用GetVerifyToken接口成功获取Token后,将Token传递至您的服务端,服务端携带Token调用阿里云的VerifyMobile接口,即可进行最终的取号操作。

SDK返回码

返回码 返回码描述 操作建议
600000 获取Token成功 -
600001 唤起授权页成功 -
600002 唤起授权页失败 建议切换到短信登录或微信登录等其他登录方式。
600004 获取运营商配置信息失败 建议升级SDK版本。您可在号码认证服务控制台下载最新版SDK。
600005 手机终端不安全 建议切换到短信登录或微信登录等其他登录方式。
600007 未检测到SIM卡 建议您检查SIM卡后重试。
600008 移动数据网络未开启 建议开启移动数据网络后重试。
600009 无法判断运营商 建议提交工单联系工程师处理。
600010 未知异常 建议提交工单联系工程师处理。
600011 获取Token失败 建议切换到短信登录或微信登录等其他登录方式。
600012 预取号失败 建议您检查数据网络环境后重试,或切换飞行模式、重启手机或切换到其他登录方式的操作尝试。
600013 运营商维护升级,该功能不可用 建议提交工单联系工程师处理。
600014 运营商维护升级,该功能调用次数已达上限 建议提交工单联系工程师处理。
600015 接口超时 建议切换到其他登录方式。
600017 AppID、AppKey解析失败 密钥未设置或设置错误,请先检查密钥信息,如密钥无问题,建议提交工单联系工程师处理。
600021 点击登录时检测到运营商已切换 建议切换到短信登录或微信登录等其他登录方式。
600023 加载⾃定义控件异常 建议您检查⾃定义控件添加是否正确。
600024 终端环境检查⽀持认证 -
600025 终端检测参数错误 建议您检查传⼊参数类型与范围是否正确。
600026 授权页已加载时不允许调用加速或预取号接口 建议您检查是否有授权页拉起后,调用preLogin或者accelerateAuthPage接口的行为不被允许。
除阿里云SDK返回码外,运营商错误码详情,请参见运营商SDK错误码

授权页点击事件响应码

响应码 描述
700000 点击返回,⽤户取消免密登录。
700001 点击切换按钮,⽤户取消免密登录。
700002 点击登录按钮事件。
700003 点击check box事件。
700004 点击协议富文本文字事件。
700006 点击一键登录拉起授权页二次弹窗。
700007 隐私协议二次弹窗关闭。
700008 点击隐私协议二次弹窗上同意并继续。
700009 点击隐私协议二次弹窗上的协议富文本文字。

授权页面设计规范

授权页面:
重要 涉及图片路径的参数,仅仅为图片名称(不带路径或后缀名),并且图片需要放置在drawable、drawable-xxhdpi等目录下。
授权页面弹窗授权页面:
重要 请勿遮挡协议栏、一键登录按钮、掩码或将字体颜色设置为透明,否则不能获取到一键登录Token。
弹窗授权页面

授权页配置详情请参见授权页配置说明

授权页配置说明

  • 授权页导航栏
    方法 参数类型 说明
    setStatusBarColor int 设置状态栏颜色(系统版本5.0以上可设置)。
    setLightColor int 设置状态栏字体颜色(系统版本6.0以上可设置,默认为黑色)。取值:
    • true:表示字体颜色为黑色。
    • false:表示字体颜色为白色。
    setNavColor int 设置导航栏主题颜色。
    setNavText String 设置导航栏标题文字。
    setNavTextColor int 设置导航栏标题字体颜色。
    setNavTextSize int 设置导航栏标题字体大小。
    setNavReturnImgPath String 设置导航栏返回键图片。
    setNavReturnHidden boolean 设置导航栏返回按钮是否隐藏。取值:
    • true:表示隐藏。
    • false:表示显示。
    setNavHidden boolean 设置默认导航栏是否隐藏。取值:
    • true:表示隐藏。
    • false:表示显示。
    setStatusBarHidden boolean 设置状态栏是否隐藏。取值:
    • true:表示隐藏。
    • false:表示显示。
    setStatusBarUIFlag int 设置状态栏UI属性。取值:
    • View.SYSTEM_UI_FLAG_LOW_PROFILE:非全屏显示状态,状态栏的部分图标会被隐藏。
    • View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:全屏显示。
    setWebViewStatusBarColor int 设置协议页状态栏颜色(系统版本5.0以上可设置),不设置则与授权页设置一致。
    setWebNavColor int 设置协议页顶部导航栏背景色,不设置则与授权页设置一致。
    setWebNavTextColor int 设置协议页顶部导航栏标题颜色,不设置则与授权页设置一致。
    setWebNavTextSize int 设置协议页顶部导航栏字体大小,不设置则与授权页设置一致。
    webNavReturnImgPath String 设置协议页导航栏返回按钮图片路径,不设置则与授权页设置一致。
    setBottomNavColor int 设置底部虚拟按键背景色(系统版本5.0以上可设置。
  • 授权页Logo
    方法 参数类型 说明
    setLogoHidden boolean 设置Logo是否隐藏。取值:
    • true:表示隐藏。
    • false:表示显示。
    setLogoImgPath String 设置Logo图片。
    setLogoWidth int 设置Logo控件宽度。
    setLogoHeight int 设置Logo控件高度。
    setLogoOffsetY int 设置Logo控件相对导航栏顶部的位移(单位:dp)。
    setLogoOffsetY_B int 设置Logo控件相对底部的位移(单位:dp)。
    setLogoScaleType ImageView.ScaleType 设置Logo图片缩放模式。
  • 授权页Slogan
    方法 参数类型 说明
    setSloganText String 设置Slogan文字内容。
    setSloganTextColor int 设置Slogan字体颜色。
    setSloganTextSize int 设置Slogan字体大小。
    setSloganOffsetY int 设置Slogan相对导航栏顶部的位移(单位:dp)。
    setSloganOffsetY_B int 设置Slogan相对底部的位移(单位:dp)。
  • 授权页掩码栏
    方法 参数类型 说明
    setNumberColor int 设置手机号码字体颜色。
    setNumberSize int 设置手机号码字体大小。
    setNumFieldOffsetY int 设置号码栏控件相对导航栏顶部的位移(单位:dp)。
    setNumFieldOffsetY_B int 设置号码栏控件相对底部的位移(单位:dp)。
    setNumberFieldOffsetX int 设置号码栏相对于默认位置的X 轴偏移量(单位:dp)。
    setNumberLayoutGravity int 设置手机号掩码的布局对齐方式,仅支持三种方式,取值:
    • Gravity.CENTER_HORIZONTAL:水平居中
    • Gravity.LEFT:左对齐
    • Gravity.RIGHT:右对齐
  • 授权页登录按钮
    方法 参数类型 说明
    setLogBtnText String 设置登录按钮文字(必须包含登录或注册关键字)。
    setLogBtnTextColor int 设置登录按钮字体颜色。
    setLogBtnTextSize int 设置登录按钮字体大小。
    setLogBtnWidth int 设置登录按钮宽度(单位:dp)。
    setLogBtnHeight int 设置登录按钮高度(单位:dp)。
    setLogBtnMarginLeftAndRight int 设置登录按钮相对于屏幕左右边缘边距。
    setLogBtnBackgroundPath String 设置登录按钮背景图片路径。
    setLogBtnOffsetY int 设置登录按钮相对导航栏顶部的位移(单位:dp)。
    setLogBtnOffsetY_B int 设置登录按钮相对底部的位移(单位:dp)。
    setLoadingImgPath String 设置登录loading dialog背景图片路径。
    setLogBtnOffsetX int 设置登录按钮X轴偏移量。如果设置了setLogBtnMarginLeftAndRight,对齐方式为左对齐或者右对齐,则会在margin的基础上再增加offsetX的偏移量,如果是居中对齐,则仅会在居中对齐的基础上再做offsetX的偏移。
    setLogBtnLayoutGravity int 设置登录按钮布局对齐方式,仅支持三种方式,取值:
    • Gravity.CENTER_HORIZONTAL:水平居中
    • Gravity.LEFT:左对齐
    • Gravity.RIGHT:右对齐
  • 授权页隐私栏
    方法 参数类型 说明
    setAppPrivacyOne String, String 设置开发者隐私条款1名称和URL(名称,URL)。
    setAppPrivacyTwo String, String 设置开发者隐私条款2名称和URL(名称,URL)。
    setAppPrivacyColor int, int 设置隐私条款名称颜色(基础文字颜色,协议文字颜色)。
    setPrivacyOffsetY int 设置隐私条款相对导航栏顶部的位移(单位:dp)。
    setPrivacyOffsetY_B int 设置隐私条款相对底部的位移(单位:dp)。
    setPrivacyState boolean 设置隐私条款是否默认勾选。
    setProtocolGravity int 设置隐私条款文字对齐方式。
    setPrivacyTextSize int 设置隐私条款字体大小。
    setPrivacyMargin int 设置隐私条款距离手机左右边缘的边距,(单位:dp)。
    setPrivacyBefore String 设置开发者隐私条款前置自定义文案。
    setPrivacyEnd String 设置开发者隐私条款尾部自定义文案。
    setCheckboxHidden boolean 设置复选框是否隐藏。
    setUncheckedImgPath String 设置复选框未选中时显示的图片。
    setCheckedImgPath String 设置复选框选中时显示的图片。
    setVendorPrivacyPrefix String 设置运营商协议前缀符号,只能设置一个字符,且只能设置<>、()、《》、【】、『』、[]、()中的一个。
    setVendorPrivacySuffix String 设置运营商协议后缀符号,只能设置一个字符,且只能设置<>、()、《》、【】、『』、[]、()中的一个。
    setProtocolLayoutGravity int 设置隐私栏的布局对齐方式,仅支持三种方式,取值:
    • Gravity.CENTER_HORIZONTAL:水平居中
    • Gravity.LEFT:左对齐
    • Gravity.RIGHT:右对齐
    该接口控制了整个隐私栏(包含check box)在其父布局中的对齐方式,而setProtocolGravity控制的是隐私协议文字内容在文本框中的对齐方式。
    setPrivacyOffsetX int 设置隐私栏X轴偏移量(单位:dp)。
    setLogBtnToastHidden boolean 设置切换check box未勾选时,单击登录按钮toast是否显示。
    请勿遮掩授权页面的隐私栏,否则会导致号码认证失败。
  • 切换控件方式
    方法 参数类型 说明
    setSwitchAccHidden boolean 设置切换按钮点是否可见。取值:
    • true:表示可见。
    • false:表示不可见。
    setSwitchAccText String 设置切换按钮文字内容。
    setSwitchAccTextColor int 设置切换按钮字体颜色。
    setSwitchAccTextSize int 设置切换按钮字体大小。
    setSwitchOffsetY int 设置换按钮相对导航栏顶部的位移(单位:dp)。
    setSwitchOffsetY_B int 设置换按钮相对底部的位移(单位:dp)。
  • 页面相关函数
    方法 参数类型 说明
    setAuthPageActIn String 设置授权页进场动画。
    setAuthPageActOut String 设置授权页退出动画。
    setScreenOrientation int 设置屏幕方向。
    setPageBackgroundPath String 设置授权页背景图。
    setDialogWidth int 设置弹窗模式授权页宽度(单位:dp),设置宽度大于0,即为弹窗模式。
    setDialogHeight int 设置弹窗模式授权页宽度(单位:dp),设置大于0,即为弹窗模式。
    setDialogOffsetX int 设置弹窗模式授权页X轴偏移(单位:dp)。
    setDialogOffsetY int 设置弹窗模式授权页Y轴偏移(单位:dp)。
    setDialogBottom boolean 设置授权页是否居于底部。