本文为您介绍Android客户端一键登录的集成方法及接口的功能示例。
接入步骤
下载SDK
登录号码认证产品控制台,在概览页面右侧API&SDK区域,单击立即下载,进入API&SDK页面,根据页面提示下载并解压对应SDK。
创建认证方案
您导入项目或调用API接口时,会用到方案Code等参数信息,请先在号码认证产品控制台,创建认证方案,获取方案Code等参数信息。
导入项目
设置minSdkVersion和compileSdkVersion版本。
minSdkVersion:号码认证SDK最低依赖版本为21,创建新项目时minSdkVersion不能低于21。
compileSdkVersion:号码认证SDK最低依赖版本为30,创建新项目时compileSdkVersion不能低于30。

导入aar产物并添加依赖。
在使用号码认证功能的module中引入相关SDK,将3个aar全部导入
module libs文件夹。
authsdk是号码认证主aar,实现一键登录及本机号码校验功能;
logger组件是authsdk使用的日志组件必须引入依赖;
main组件是authsdk使用的基础功能组件必须引入依赖;
在module下build.gradle文件中找到
dependencies,添加如下引用:implementation fileTree(dir: 'libs', include: ['*.aar']) implementation 'androidx.appcompat:appcompat:1.3.1'
创建签名文件。
参考studio创建签名文件创建签名文件,此签名文件在创建方案号时使用,签名文件放置在module下,文件名及文件路径无设置要求。
以Demo为例,将签名文件放置在
app/sig-adaptation/debug/文件夹下,则需在module的build.gradle文件中指向该签名。
查看签名。
使用Studio右侧面板,选择Gradle > 项目名称 > 签名文件module > Tasks > android > signingReport,查看签名。
说明包签名获取方式如下:
方式一:上图的下方输出的MD5值移除冒号,将大写字母转换为小写字母即可生成包签名。
方式二:请通过手机终端下载并安装Android App签名获取工具,获取Android App的包签名信息。
添加配置
添加权限:在AndroidMainfest.xml清单文件中添加权限。
必要权限(aar中已申请,用户无需单独配置)
<uses-permission android:name="android.permission.INTERNET" /> <!-- 网络访问 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 检查wifi网络状态 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 检查网络状态 --> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <!-- 允许修改网络状态 -->非必要权限(不配置此权限,不影响使用一键登录功能)
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!--允许访问电话状态-->添加Activity声明。
在AndroidMainfest.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:launchMode="singleTop" android:screenOrientation="behind" android:theme="@style/authsdk_activity_dialog" /> //仅在弹窗模式下配置,全屏模式无需配置 //如使用自定义协议页跳转协议(即setProtocolAction)则不需注册该界面 <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:configChanges="orientation|keyboardHidden|screenSize" android:exported="false" android:launchMode="singleTop" android:name="com.mobile.auth.gatewayauth.PrivacyDialogActivity" android:screenOrientation="behind" android:theme="@style/authsdk_activity_dialog"/>混淆配置:由于号码认证SDK内置界面使用AppCompatActivity,故需要在
proguard-rules.pro文件内增加相关混淆配置。# 保护AppCompatActivity及其相关类 -keep class androidx.appcompat.app.AppCompatActivity -keep class androidx.core.content.ContextCompat { *; }
交互流程详解
完整的功能交互流程请参见一键登录交互流程。
SDK方法说明
获取认证实例
/**
 *  获取该类的单例实例对象
 *  @param context  Android上下文建议使用applicationcontext
 *  @param tokenListener 需要实现的获取Token回调
 *  @return  单例实例对象
 */
public static PhoneNumberAuthHelper getInstance(Context context, TokenResultListener tokenResultListener)使用示例
TokenResultListener mTokenResultListener = new TokenResultListener() {
    @Override
    public void onTokenSuccess(String s) {
        //此处可进行token获取成功及授权页唤起成功的业务处理
    }
    @Override
    public void onTokenFailed(String s) {
        //此处可进行token获取失败及退出授权页的业务处理
    }
};
PhoneNumberAuthHelper mPhoneNumberAuthHelper = PhoneNumberAuthHelper.getInstance(this, mTokenResultListener);必调方法:设置SDK密钥(setAuthSDKInfo)
请在号码认证控制台的号码认证方案管理页,在对应的方案名称操作列单击密钥后,再单击复制密钥即可获取。如果您的账户下还未创建号码认证方案或已创建的方案信息需要更新,请参见号码认证服务。
号码认证方案密钥与您阿里云账户的AccessKey ID、AccessKey Secret不同,请勿在调用此方法时传入AccessKey ID及AccessKey Secret。
/**
 *  初始化SDK调用参数,App生命周期内调用一次
 *  @param 认证方案密钥(非AccessKey、AccessKey Secret)
 */
public void setAuthSDKInfo(String secretInfo)使用示例
mPhoneNumberAuthHelper.setAuthSDKInfo(secretInfo);必调方法:设置获取Token回调
在一键登录前调用,用于监控一键登录结果。
 /**
  * 设置获取Token回调,修改getInstance传入的回调实现
  * 接口回调其他事件:600001(授权页唤起成功)、600002(授权页唤起失败)、600000(成功获取Token)、600011(获取Token失败)、
  * 600015(获取Token超时)、600013(运营商维护升级,该功能不可用)、600014(运营商维护升级,该功能已达最大调用次数).....
  * @param tokenListener 回调实现
  */
 public void setAuthListener(TokenResultListener tokenListener) 使用示例
 mTokenResultListener = new TokenResultListener() {
            @Override
            public void onTokenSuccess(String s) {
                //此处可进行token获取成功及授权页唤起成功的业务处理
            }
            @Override
            public void onTokenFailed(String s) {
                //此处可进行token获取失败及退出授权页的业务处理
            }
        };
        mPhoneNumberAuthHelper.setAuthListener(mTokenResultListener);必调方法:修改授权页主题
该接口需在getLoginToken接口之前调用,具体页面属性请参考UI接口设置。
   /**
     * 修改授权页面主题,开发者可以通过 此方法修改授权页面主题,需在 getLoginToken接口之前调用
     *
     * @param authUIConfig 登录授权页UI自定义配置
     */
    @AuthNumber
    public void setAuthUIConfig(AuthUIConfig authUIConfig)使用示例
    mAuthHelper.setAuthUIConfig(new AuthUIConfig.Builder()
                .setAppPrivacyOne("《自定义隐私协议》", "https://www.baidu.com")
                .setAppPrivacyTwo("《自定义隐私协议》2","https://baijiahao.baidu.com/s?id=1693920988135022454&wfr=spider&for=pc")
                .setAppPrivacyThree("《自定义隐私协议》3","http://www.npc.gov.cn/zgrdw/npc/cwhhy/13jcwh/node_35014.htm")
                .setAppPrivacyColor(Color.GRAY, Color.parseColor("#002E00"))
                .setPrivacyConectTexts(new String[]{",","","和"})
                .setPrivacyOperatorIndex(2)
                .setPrivacyState(false)
                //.setCheckboxHidden(true)
                .setNavHidden(true)
                .setSwitchAccHidden(true)
                .setNavReturnHidden(true)
                .setDialogBottom(false)
                //自定义协议页跳转协议,需要在清单文件配置自定义intent-filter,不需要自定义协议页,则请不要配置ProtocolAction
                .setProtocolAction("com.aliqin.mytel.protocolWeb")
                .setPackageName(mPackageName)
                .setNavColor(Color.TRANSPARENT)
                .setWebNavColor(Color.BLUE)
                .setLogoOffsetY(0)
                .setLogoWidth(42)
                .setLogoHeight(42)
                .setLogoImgPath("mytel_app_launcher")
                .setNumFieldOffsetY(unit + 10)
                //设置字体大小,以Dp为单位,不同于Sp,不会随着系统字体变化而变化
                .setNumberSizeDp(17)
                .setLogBtnWidth(dialogWidth - 30)
                .setLogBtnMarginLeftAndRight(15)
                .setLogBtnHeight(logBtnHeight)
                .setLogBtnTextSizeDp(16)
                .setLogBtnBackgroundPath("login_btn_bg")
                .setLogBtnOffsetY(unit * 4)
                .setSloganText("为了您的账号安全,请先绑定手机号")
                .setSloganOffsetY(unit * 3)
                .setSloganTextSizeDp(11)
                .setPageBackgroundPath("dialog_page_background")
                .setAuthPageActIn("in_activity", "out_activity")
                .setAuthPageActOut("in_activity", "out_activity")
                .setVendorPrivacyPrefix("《")
                .setVendorPrivacySuffix("》")
                .setDialogWidth(dialogWidth)
                .setDialogHeight(dialogHeight)
                .setScreenOrientation(authPageOrientation)
                .create());必调方法:一键登录获取Token(getLoginToken)
/**
     * 获取登录Token 调起一键登录授权页面,在用户授权后获取一键登录的Token
     * @param context 上下文,建议使用activity(设置拉起动画时必须使用activity才会生效)
     * @param totalTimeout 超时时间 单位ms
     */
public void getLoginToken(final Context context, final int totalTimeout)使用示例
mPhoneNumberAuthHelper.getLoginToken(this, timeout);必调方法:注销登录页面(quitLoginPage)
/**
 * 退出授权认证页
 */
public void quitLoginPage()使用示例
mPhoneNumberAuthHelper.quitLoginPage();选调方法:授权页控件点击事件监控
    /**
     * 设置UI控件点击事件回调
     *
     * @param uiClickListener 回调实现
     */
    public void setUIClickListener(AuthUIControlClickListener uiClickListener) 使用示例
   mAuthHelper.setUIClickListener(new AuthUIControlClickListener() {
            @Override
            public void onClick(String code, Context context, String jsonString) {
                //此处进行授权页各控件点击事件监控,根据不同code区分控件
            }
        });选调方法:加速拉起授权页(accelerateLoginPage)
/**
 * 加速授权页唤起
 *
 * @param overdueTimeMills 接口超时时间,单位:ms
 * @param listener         预取号回调
 */
public void accelerateLoginPage(final int overdueTimeMills, final PreLoginResultListener listener) 使用示例
mPhoneNumberAuthHelper.accelerateLoginPage(timeout, new PreLoginResultListener() {
    @Override
    public void onTokenSuccess(String s) {
        //加速成功业务逻辑处理
    }
    @Override
    public void onTokenFailed(String s, String s1) {
        //加速失败业务逻辑处理
    }
});其他接口说明
选调方法:获取版本号
/**
 * 返回SDK版本号
 *
 * @return versionCode SDK版本号
 */
public static String getVersion()使用示例
String version = PhoneNumberAuthHelper.getVersion();选调方法:环境检查
/**
     * SDK环境检查函数,检查终端是否支持号码认证。
     *
     * @see PhoneNumberAuthHelper#SERVICE_TYPE_AUTH
     * @see PhoneNumberAuthHelper#SERVICE_TYPE_LOGIN
     */
public void checkEnvAvailable(final @IntRange(from = 1, to = 2) int type)使用示例
本方法依赖回调接口 TokenResultListener返回检查结果,您可在 onTokenSuccess 和 onTokenFailed 方法中处理结果。建议您参考Demo为您提供的示例,文件路径:Demo/app/src/main/java/com/aliqin/mytel/auth/PersonActivity.java。
mPhoneNumberAuthHelper.checkEnvAvailable(PhoneNumberAuthHelper.SERVICE_TYPE_AUTH);选调方法:设置授权页协议框是否勾选
/**
* 设置授权页协议勾选框选中状态
*
* @param paramBoolean勾选框选中状态
*/
public void setProtocolChecked(boolean ischeck)使用示例
mPhoneNumberAuthHelper.setProtocolChecked(true);选调方法:结束授权页loading动画
    /**
     * 结束授权页loading dialog
     */
    public void hideLoginLoading()使用示例
mPhoneNumberAuthHelper.hideLoginLoading();选调方法:授权页是否扩大协议按钮选择范围至我已阅读并同意
    /**
     *授权页是否扩大协议按钮选择范围至我已阅读并同意 
     */
    public void expandAuthPageCheckedScope(boolean expand)使用示例
mPhoneNumberAuthHelper.expandAuthPageCheckedScope(true);选调方法:获取授权页协议勾选框选中状态
/**
 * 获取授权页协议勾选框选中状态
 */
public boolean queryCheckBoxIsChecked()使用示例
boolean checked = mPhoneNumberAuthHelper.queryCheckBoxIsChecked();选调方法:用户控制返回键及左上角返回按钮效果
调用此方法后用户在setUIClickListener方法中收到ResultCode.CODE_ERROR_USER_CANCEL回调后控制授权页关闭逻辑。
    /**
     * 授权页返回由用户控制
     */
    public void userControlAuthPageCancel()使用示例
 mPhoneNumberAuthHelper.userControlAuthPageCancel();选调方法:用户禁止使用utdid
调用该方法后移除相关utdid的使用。
   /**
     * 禁止使用utdid
     */
    public void prohibitUseUtdid()使用示例
mPhoneNumberAuthHelper.prohibitUseUtdid();选调方法:授权页是否跟随系统深色模式
   /**
     * 授权页界面是否跟随系统深色模式,默认true跟随
     */
    public void setAuthPageUseDayLight(boolean authPageUseDayLight)使用示例
mPhoneNumberAuthHelper.setAuthPageUseDayLight(true);选调方法:SDK内置所有界面隐藏底部导航栏
   /**
     * SDK内置所有界面隐藏系统底部导航栏
     */
    public void keepAllPageHideNavigationBar()使用示例
mPhoneNumberAuthHelper.keepAllPageHideNavigationBar();选调方法:授权页物理返回键禁用
   /**
     * 控制授权页物理返回键是否可用 
     */
    public void closeAuthPageReturnBack(boolean close)使用示例
mPhoneNumberAuthHelper.closeAuthPageReturnBack(true);选调方法:横屏水滴屏全屏适配
   /**
     *授权页刘海屏水滴屏药丸屏横屏时是否全屏
     */
    public void keepAuthPageLandscapeFullSreen(boolean fullScreen) 使用示例
mPhoneNumberAuthHelper.keepAuthPageLandscapeFullSreen(true);选调方法:删除预取号码信息
   /**
     * 删除预取号码信息
     */
    @AuthNumber
    public void clearPreInfo()使用示例
mPhoneNumberAuthHelper.clearPreInfo();选调方法:获取上网卡运营商
  /**
     * 返回默认上网卡运营商
     *
     * @return CMCC(中国移动)、CUCC(中国联通)、CTCC(中国电信)
     */
    public String getCurrentCarrierName()使用示例
String carrierName=mPhoneNumberAuthHelper.getCurrentCarrierName();选调方法:动态添加控件
/**
 * 动态添加控件
 *
 * @param viewID view的ID
 * @param viewConfig view的动态配置
 */
public void addAuthRegistViewConfig(String viewID, AuthRegisterViewConfig viewConfig) 使用示例
 mAuthHelper.addAuthRegistViewConfig(""/**view ID */, new AuthRegisterViewConfig.Builder()
                  //此处需改为用户自定义添加的view
                 .setView(null)
                 //AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_BODY 导航栏以下部分      
                 //AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_TITLE_BAR 导航栏部分   
                 //AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_NUMBER 手机号掩码部分   
                .setRootViewId(AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_BODY)
                .setCustomInterface(new CustomInterface() {
                    @Override
                    public void onClick(Context context) {
                        //此处可进行用户自定义view点击事件业务逻辑处理
                    }
                }).build());选调方法:移除所有动态添加的控件
在调用addAuthRegistViewConfig之前调用removeAuthRegisterViewConfig先移除所有动态添加的控件。
/**
 * 移除所有动态添加的控件
 */
public void removeAuthRegisterViewConfig()使用示例
 mAuthHelper.removeAuthRegisterViewConfig();选调方法:添加自定义布局
   /**
     * 添加自定义布局
     *
     * @param xmlConfig
     */
    @AuthNumber
    public void addAuthRegisterXmlConfig(AuthRegisterXmlConfig xmlConfig) 使用示例
 mAuthHelper.addAuthRegisterXmlConfig(new AuthRegisterXmlConfig.Builder()
                .setLayout(//此处需改为用户自定义的布局ID, new AbstractPnsViewDelegate() {
                    @Override
                    public void onViewCreated(View view) {
                        //此处可进行用户自定义布局业务逻辑处理
                    }
                })
                .build());选调方法:移除所有添加的自定义布局
在调用addAuthRegisterXmlConfig之前调用removeAuthRegisterXmlConfig先移除所有添加的自定义View。
/**
 * 移除所有的自定义布局
 */
@AuthNumber
public void removeAuthRegisterXmlConfig()使用示例
mAuthHelper.removeAuthRegisterXmlConfig();二次弹窗相关
选调方法:添加二次弹窗自定义布局
在调用addPrivacyRegisterXmlConfig前,调用removePrivacyRegisterXmlConfig先移除所有添加的自定义View。
/**
 * 添加二次弹窗自定义布局
 *
 * @param xmlConfig
 */
@AuthNumber
public void addPrivacyRegisterXmlConfig(AuthRegisterXmlConfig xmlConfig)选调方法:二次弹窗取消事件
/**
 * 二次弹窗取消事件
 *
 * @param
 */
@AuthNumber
public void quitPrivacyPage() 选调方法:移除二次弹窗所有自定义布局
/**
 * 移除二次弹窗所有的自定义布局
 */
@AuthNumber
public void removePrivacyRegisterXmlConfig()使用示例
mAuthHelper.removePrivacyRegisterXmlConfig();
mAuthHelper.addPrivacyRegisterXmlConfig(new AuthRegisterXmlConfig.Builder()
            //此处需改为用户自定义的布局ID
            .setLayout(null, new AbstractPnsViewDelegate() {
            @Override
            public void onViewCreated(View view) {
                //此处可进行用户自定义布局业务逻辑处理
            }
        })
        .build());选调方法:二次弹窗动态添加控件
/**
 * 动态添加控件
 *
 * @param viewID view的ID
 * @param viewConfig view的动态配置
 */
public void addPrivacyAuthRegistViewConfig(String viewID, AuthRegisterViewConfig viewConfig) 使用示例
 mAuthHelper.addPrivacyAuthRegistViewConfig(""/**view ID */, new AuthRegisterViewConfig.Builder()
                  //此处需改为用户自定义添加的view
                 .setView(null)
                 //AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_BODY 协议文本区域      
                 //AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_TITLE_BAR 导航栏部分   
                 //AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_NUMBER 确认按钮区域   
                .setRootViewId(AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_BODY)
                .setCustomInterface(new CustomInterface() {
                    @Override
                    public void onClick(Context context) {
                        //此处可进行用户自定义view点击事件业务逻辑处理
                    }
                }).build());选调方法:移除所有动态添加的控件
在调用addPrivacyAuthRegistViewConfig之前调用removePrivacyAuthRegisterViewConfig先移除所有动态添加的控件。
/**
 * 移除所有动态添加的控件
 */
public void removePrivacyAuthRegisterViewConfig()使用示例
 mAuthHelper.removePrivacyAuthRegisterViewConfig();授权页设置ActivityResult回调
   /**
     * 设置ActivityResult回调
     *
     * @param resultListener 回调实现
     */
    public void setActivityResultListener(ActivityResultListener resultListener) 使用示例
 mPhoneNumberAuthHelper.setActivityResultListener(new ActivityResultListener() {
            @Override
            public void onActivityResult(int requestCode, int resultCode, Intent data) {
               //此处可进行用户业务逻辑处理 
            }
        });获取日志埋点相关控制对象
获取到该对象后可以进行相关的日志设置。
    /**  获取日志埋点相关控制对象
     * @return
     * @see PnsReporter
     */
    public PnsReporter getReporter()使用示例
PnsReporter reporter=mPhoneNumberAuthHelper.getReporter()日志埋点设置
选调方法:控制台日志输出开关
/**
 * 设置控制台日志开关
 *
 */
void setLoggerEnable(boolean isEnable)使用示例
mPhoneNumberAuthHelper.getReporter().setLoggerEnable(true)选调方法:设置日志及埋点上传开关
/**
 * 设置上传开关
 *
 * @param isEnable added in {@link Constant#API_LEVEL_2}
 */
void setUploadEnable(boolean isEnable)使用示例
mPhoneNumberAuthHelper.getReporter().setUploadEnable(true)选调方法:注册一个日志处理器
SDK内部产生的日志、埋点可以通过该处理器上传到您的平台。
/**
 * 注册一个日志处理器,SDK内部产生的日志、埋点可以通过该处理器上传到自己的平台。
 * 与{@link #setUploader(PnsUploader)}不同的是,该处理器不仅可以自己做上传处理,也可以做本地缓存管理
 * @param handler
 */
void setLoggerHandler(PnsLoggerHandler handler)使用示例
 authHelper.getReporter().setLoggerHandler(new PnsLoggerHandler() {
            @Override
            public void monitor(String msg) {
                Log.e("xxffg","Monitor:"+msg);
            }
            @Override
            public void verbose(String msg) {
                Log.e("xxffg","Verbose:"+msg);
            }
            @Override
            public void info(String msg) {
                Log.e("xxffg","Info:"+msg);
            }
            @Override
            public void debug(String msg) {
                Log.e("xxffg","Debug:"+msg);
            }
            @Override
            public void warning(String msg) {
                Log.e("xxffg","Warning:"+msg);
            }
            @Override
            public void error(String msg) {
                Log.e("xxffg","Error:"+msg);
            }
        });UI页面接口说明
全屏授权页面设计规范
弹窗授权页面设计规范
代码示例
唤起授权页(竖屏全屏)示例
//1、创建PhoneNumberAuthHelper实例
String secretInfo="用户密钥";
TokenResultListener mCheckListener = new TokenResultListener() {
            @Override
            public void onTokenSuccess(String s) {
               //此处可进行初始化环境检测成功的业务处理
            }
            @Override
            public void onTokenFailed(String s) {
               //此处可进行初始化环境检测失败的业务处理
            }
        };
        mPhoneNumberAuthHelper = PhoneNumberAuthHelper.getInstance(this, mCheckListener);
        mPhoneNumberAuthHelper.getReporter().setLoggerEnable(true);
        mPhoneNumberAuthHelper.setAuthSDKInfo(secretInfo);
//2、检测环境
mPhoneNumberAuthHelper.checkEnvAvailable(PhoneNumberAuthHelper.SERVICE_TYPE_LOGIN);
//3.1、加速拉起一键登录页面  
//在不是一进app就需要登录的场景 建议调用此接口 加速拉起一键登录页面
//等到用户点击登录的时候 授权页可以秒拉
//预取号的成功与否不影响一键登录功能,所以不需要等待预取号的返回。
mPhoneNumberAuthHelper.accelerateLoginPage(timeout, new PreLoginResultListener() {
            @Override
            public void onTokenSuccess(String s) {
                //加速成功业务逻辑处理
            }
            @Override
            public void onTokenFailed(String s, String s1) {
                //加速失败业务逻辑处理
            }
        });
//3.2、添加授权页属性,调用获取登录Token接口,可以立马弹起授权页
mAuthHelper.setUIClickListener(new AuthUIControlClickListener() {
            @Override
            public void onClick(String code, Context context, String jsonString) {
            //此处进行授权页各控件点击事件监控,根据不同code区分控件
            }
        });
        mAuthHelper.removeAuthRegisterXmlConfig();
        mAuthHelper.removeAuthRegisterViewConfig();
        //添加自定义切换其他登录方式
        mAuthHelper.addAuthRegistViewConfig(""//view ID, new AuthRegisterViewConfig.Builder()
               //此处需改为用户自定义添加的view
                .setView(null)
                .setRootViewId(AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_BODY)
                .setCustomInterface(new CustomInterface() {
                    @Override
                    public void onClick(Context context) {
                    //此处可进行用户自定义view点击事件业务逻辑处理  
                    }
                }).build());
        int authPageOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;
        if (Build.VERSION.SDK_INT == 26) {
            authPageOrientation = ActivityInfo.SCREEN_ORIENTATION_BEHIND;
        }
        updateScreenSize(authPageOrientation);
        mAuthHelper.setAuthUIConfig(new AuthUIConfig.Builder()
                .setAppPrivacyOne("《自定义隐私协议》", "https://test.h5.app.tbmao.com/user")
                .setAppPrivacyTwo("《百度》", "https://www.baidu.com")
                .setAppPrivacyColor(Color.GRAY, Color.parseColor("#002E00"))
                //隐藏默认切换其他登录方式
                .setSwitchAccHidden(true)
                //隐藏默认Toast
                .setLogBtnToastHidden(true)
                //沉浸式状态栏
                .setNavColor(Color.parseColor("#026ED2"))
                .setStatusBarColor(Color.parseColor("#026ED2"))
                .setWebViewStatusBarColor(Color.parseColor("#026ED2"))
                .setLightColor(true)
                .setBottomNavColor(Color.TRANSPARENT)
                .setWebNavTextSizeDp(20)
                //图片或者xml的传参方式为不包含后缀名的全称 需要文件需要放在drawable或drawable-xxx目录下 in_activity.xml, mytel_app_launcher.png
                .setAuthPageActIn("in_activity", "out_activity")
                .setAuthPageActOut("in_activity", "out_activity")
                .setProtocolShakePath("protocol_shake")
                .setVendorPrivacyPrefix("《")
                .setVendorPrivacySuffix("》")
                .setPageBackgroundPath("page_background_color")
                .setLogoImgPath("mytel_app_launcher")
                //一键登录按钮三种状态背景示例login_btn_bg.xml
                .setLogBtnBackgroundPath("login_btn_bg")
                .setScreenOrientation(authPageOrientation)
                .create());
//用户控制返回键及左上角返回按钮效果
mPhoneNumberAuthHelper.userControlAuthPageCancel();
//用户禁用utdid
mPhoneNumberAuthHelper.prohibitUseUtdid();
//授权页是否跟随系统深色模式
mPhoneNumberAuthHelper.setAuthPageUseDayLight(true);
//授权页物理返回键禁用
//mPhoneNumberAuthHelper.closeAuthPageReturnBack(true);
//横屏水滴屏全屏适配
mPhoneNumberAuthHelper.keepAuthPageLandscapeFullSreen(true);
//授权页扩大协议按钮选择范围至我已阅读并同意
//mPhoneNumberAuthHelper.expandAuthPageCheckedScope(true);
 mTokenResultListener = new TokenResultListener() {
            @Override
            public void onTokenSuccess(String s) {
            //此处可进行token获取成功及授权页唤起成功的业务处理
            }
            @Override
            public void onTokenFailed(String s) {
            //此处可进行token获取失败及退出授权页的业务处理
            }
        };
        mPhoneNumberAuthHelper.setAuthListener(mTokenResultListener);
        mPhoneNumberAuthHelper.getLoginToken(this, timeout);唤起授权页(横屏全屏)示例
 mAuthHelper.setAuthUIConfig(new AuthUIConfig.Builder()
                .setAppPrivacyOne("《自定义隐私协议》", "https://www.baidu.com")
                .setAppPrivacyColor(Color.GRAY, Color.RED)
                .setSloganHidden(true)
                .setNavHidden(true)
                .setCheckedImgPath("checked")
                //设置字体大小,以Dp为单位,不同于Sp,不会随着系统字体变化而变化
                .setNumberSizeDp(35)
                .setUncheckedImgDrawable(mActivity.getResources().getDrawable(R.drawable.unchecked))
                .setStatusBarHidden(true)
                .setLogoOffsetY(unit)
                .setLogoImgPath("phone")
                .setLogoWidth(50)
                .setLogoHeight(50)
                .setNumFieldOffsetY(unit * 3)
                .setLogBtnOffsetY(unit * 5)
                .setLogBtnHeight(logBtnHeight)
                .setSwitchOffsetY(unit * 7)
                .setLogBtnMarginLeftAndRight((mScreenHeightDp - 339) / 2)
                .setPrivacyMargin(115)
                .setLogBtnWidth(339)
                .setAuthPageActIn("in_activity", "out_activity")
                .setAuthPageActOut("in_activity", "out_activity")
                .setProtocolShakePath("protocol_shake")
                .setVendorPrivacyPrefix("《")
                .setVendorPrivacySuffix("》")
                .setPageBackgroundPath("page_background_color")
                .setLogBtnBackgroundPath("login_btn_bg")
                //设置屏幕方向
                .setScreenOrientation(authPageOrientation)
                .create());唤起授权页(竖屏弹窗)示例
  int dialogWidth = (int) (mScreenWidthDp * 0.8f);
  int dialogHeight = (int) (mScreenHeightDp * 0.65f) - 50;
mAuthHelper.setAuthUIConfig(new AuthUIConfig.Builder()
                .setAppPrivacyOne("《自定义隐私协议》", "https://www.baidu.com")
                .setAppPrivacyTwo("《自定义隐私协议》2","https://baijiahao.baidu.com/s?id=1693920988135022454&wfr=spider&for=pc")
                .setAppPrivacyThree("《自定义隐私协议》3","http://www.npc.gov.cn/zgrdw/npc/cwhhy/13jcwh/node_35014.htm")
                .setAppPrivacyColor(Color.GRAY, Color.parseColor("#002E00"))
                .setPrivacyConectTexts(new String[]{",","","和"})
                .setPrivacyOperatorIndex(2)
                .setPrivacyState(false)
                //.setCheckboxHidden(true)
                .setNavHidden(true)
                .setSwitchAccHidden(true)
                .setNavReturnHidden(true)
                .setDialogBottom(false)
                //自定义协议页跳转协议,需要在清单文件配置自定义intent-filter,不需要自定义协议页,则请不要配置ProtocolAction
                .setProtocolAction("com.aliqin.mytel.protocolWeb")
                .setPackageName(mPackageName)
                .setNavColor(Color.TRANSPARENT)
                .setWebNavColor(Color.BLUE)
                .setLogoOffsetY(0)
                .setLogoWidth(42)
                .setLogoHeight(42)
                .setLogoImgPath("mytel_app_launcher")
                .setNumFieldOffsetY(unit + 10)
                //设置字体大小,以Dp为单位,不同于Sp,不会随着系统字体变化而变化
                .setNumberSizeDp(17)
                .setLogBtnWidth(dialogWidth - 30)
                .setLogBtnMarginLeftAndRight(15)
                .setLogBtnHeight(logBtnHeight)
                .setLogBtnTextSizeDp(16)
                .setLogBtnBackgroundPath("login_btn_bg")
                .setLogBtnOffsetY(unit * 4)
                .setSloganText("为了您的账号安全,请先绑定手机号")
                .setSloganOffsetY(unit * 3)
                .setSloganTextSizeDp(11)
                .setPageBackgroundPath("dialog_page_background")
                .setAuthPageActIn("in_activity", "out_activity")
                .setAuthPageActOut("in_activity", "out_activity")
                .setVendorPrivacyPrefix("《")
                .setVendorPrivacySuffix("》")
                .setDialogWidth(dialogWidth)
                .setDialogHeight(dialogHeight)
                .setScreenOrientation(authPageOrientation)
                .create());全屏模式下二次弹窗示例
 mAuthHelper.setAuthUIConfig(new AuthUIConfig.Builder()
                .setAppPrivacyOne("《自定义隐私协议》", "https://test.h5.app.tbmao.com/user")
                .setAppPrivacyTwo("《百度》", "https://www.baidu.com")
                .setAppPrivacyColor(Color.GRAY, Color.parseColor("#002E00"))
                //隐藏默认切换其他登录方式
                .setSwitchAccHidden(true)
                //隐藏默认Toast
                .setLogBtnToastHidden(true)
                //沉浸式状态栏
                .setNavColor(Color.parseColor("#026ED2"))
                .setStatusBarColor(Color.parseColor("#026ED2"))
                .setWebViewStatusBarColor(Color.parseColor("#026ED2"))
                .setLightColor(false)
                .setBottomNavColor(Color.TRANSPARENT)
                .setWebNavTextSizeDp(20)
                //图片或者xml的传参方式为不包含后缀名的全称 需要文件需要放在drawable或drawable-xxx目录下 in_activity.xml, mytel_app_launcher.png
                .setAuthPageActIn("in_activity", "out_activity")
                .setAuthPageActOut("in_activity", "out_activity")
                .setProtocolShakePath("protocol_shake")
                .setVendorPrivacyPrefix("《")
                .setVendorPrivacySuffix("》")
                .setPageBackgroundPath("page_background_color")
                .setLogoImgPath("mytel_app_launcher")
                //一键登录按钮三种状态背景示例login_btn_bg.xml
                .setLogBtnBackgroundPath("login_btn_bg")
                .setScreenOrientation(authPageOrientation)
                .setPrivacyAlertIsNeedShow(true)
                .setPrivacyAlertIsNeedAutoLogin(true)
                .setPrivacyAlertAlignment(Gravity.CENTER)
                .setPrivacyAlertBackgroundColor(Color.WHITE)
                .setPrivacyAlertMaskAlpha(0.1f)
                .setPrivacyAlertWidth(dialogWidth)
                .setPrivacyAlertHeight(dialogHeight)
                .setPrivacyAlertCornerRadiusArray(new int[]{10,10,10,10})
                .setPrivacyAlertTitleTextSize(15)
                .setPrivacyAlertTitleColor(Color.BLACK)
                .setPrivacyAlertContentTextSize(12)
                .setPrivacyAlertContentColor(Color.BLUE)
                .setPrivacyAlertContentBaseColor(Color.RED)
                .setPrivacyAlertContentHorizontalMargin(40)
                .setPrivacyAlertContentAlignment(Gravity.CENTER)
                .setPrivacyAlertContentVerticalMargin(30)
                .setPrivacyAlertBtnTextColor(Color.WHITE)
                .setPrivacyAlertBtnTextColorPath("privacy_alert_btn_color")
                .setPrivacyAlertEntryAnimation("in_activity")
                .setPrivacyAlertExitAnimation("out_activity")
                .create());配置授权页导航栏
配置授权页Logo
配置授权页Slogan
配置授权页号码栏
配置授权页登录按钮
配置授权页隐私栏
配置切换控件方式
配置页面相关函数
二次隐私协议弹窗页面


