Android对接文档

用户8695 最后一次编辑

接入指南

SDK支持版本:Android4.0以上
本文档为一键登录SDK开发文档注意事项:
注意事项:
  1. 一键登录服务必须打开蜂窝数据流量并且手机操作系统给予应用蜂窝数据权限才能使用;
  2. 取号请求过程需要消耗用户少量数据流量(国外漫游时可能会产生额外的费用);
  3. 一键登录服务目前支持2G/3G/4G/5G(2G、3G因为无线网络环境问题,时延和成功率会比4G/5G低)

开发流程

1.引入Jar包

直接导入下载的依赖包,包含两个依赖包,分别是一键登录SDK及电信一键登录SDK。
repositories { flatDir { dirs 'libs' } } dependencies { implementation(name: 'quick-login-v<最新版>', ext: 'aar') implementation(name: 'ctcc_sdk_v<最新版>', ext: 'aar') }

2. AndroidManifest.xml文件配置

2.1 权限声明

<!-- 必要的权限 --> <!-- 允许应用程序联网,用于访问网关和认证服务器 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 获取网络状态,判断是否数据、wifi等 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 允许程序改变网络连接状态 --> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <!-- 非必要权限 --> <!-- 允许程序访问WiFi网络状态信息 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 用于判断双卡和换卡 --> <uses-permission android:name="android.permission.READ_PHONE_STATE" />

2.2 http兼容配置

移动运营商一键登录SDK存在http请求,需要在AndroidManifest.xml 的 application 的标签中增加:android:networkSecurityConfig 配置
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:networkSecurityConfig="@xml/network_security_config">
在项目的res/xml文件夹新增network_security_config.xml文件,文件内容如下:
/** * 初始化 * * @param context Application Context * @param key 分配的key */ public static LoginHelper init(Context context, String key)
参数说明
参数类型说明
contextContextApplication Context
keyString分配的Key
示例
LoginHelper loginHelper = LoginHelper.init(getApplicationContext(), "分配的key");

4.获取token

4.1 隐式获取token

接口
/** * 获取token * * @param loginResultListener loginResultListener 回调监听 * @param timeout 请求超时时间 */ public void getAccessCode(LoginResultListener loginResultListener, int timeout)
参数说明
参数类型说明
loginResultListenerLoginResultListener回调监听
timeoutint请求超时时间
LoginResultListener
public interface LoginResultListener { /** * 结果回调 * * @param loginInfo 运营商结果信息 */ void onComplete(LoginInfo loginInfo); }
参数说明
参数类型说明
loginInfoLoginInfo结果对象
LoginInfo对象说明:
参数类型是否回传服务器说明
resultCodeint获取结果,0:成功 其他状态码:失败
msgstring结果信息
operatorTypestring成功时返回,运营商类型            CM:中国移动 CU:中国联通 CT:中国电信
accessCodestring成功时返回,用于置换手机号的accessCode
authCodestring电信校验code
traceIdstring成功时返回,追踪ID
mobilestring脱敏手机号
authCodestring校验码
示例
LoginHelper.getInstance().getAccessCode(new LoginResultListener() { @Override public void onComplete(final LoginInfo loginInfo) { runOnUiThread(new Runnable() { @Override public void run() { resp.setText("resultCode:" + loginInfo.getResultCode() + ",msg:" + loginInfo.getMsg() + ",operatorType:" + loginInfo.getOperatorType() + ",accessCode:" + loginInfo.getAccessCode() + ",traceId:" + loginInfo.getTraceId() + ",mobile:" + loginInfo.getMobile() + ",authCode:" + loginInfo.getAuthCode() + "\n 耗时:" + ((System.currentTimeMillis() - startTime)) + "毫秒"); } }); System.out.println(loginInfo.toString()); } }, 5000);

4.2 显式获取token

一键登录页面声明
<activity android:name="cc.quicklogin.sdk.open.LoginAuthActivity" android:exported="false" android:theme="@style/Quick_Login_Dialog" android:screenOrientation="portrait" />
弹窗样式
<style name="Quick_Login_Dialog" parent="Theme.AppCompat.Light.NoActionBar"> <!-- 背景透明 --> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsTranslucent">true</item> <item name="android:backgroundDimEnabled">true</item> </style>
接口
/** * 获取token * * @param loginResultListener loginResultListener 回调监听 * @param timeout 请求超时时间 * @param authUiConfig UI界面配置 */ public void getAccessCode(LoginResultListener loginResultListener, int timeout, AuthUIConfig authUiConfig)
调用方式及回调响应参考隐式方式
AuthUIConfig参数说明
/** * 设置 status bar 的背景色 */ public Builder setStatusBarColor(int statusBarColor) /** * 设置 status bar 样式,true:暗色图标 false:亮色图标 */ public Builder setStatusBarLight(boolean statusBarLight) /** * 设置导航栏背景色 */ public Builder setNavColor(int navColor) /** * 设置导航栏标题内容 */ public Builder setNavText(String navText) /** * 设置导航栏标题字体大小 */ public Builder setNavTextSize(int navTextSize) /** * 设置导航栏标题颜色 */ public Builder setNavTextColor(int navTextColor) /** * 设置返回按钮图片 */ public Builder setNavBackImgPath(String navBackImgPath) /** * 设置返回按钮图片 */ public Builder setNavBackImgDrawable(Drawable navBackImgDrawable) /** * 设置返回按钮是否隐藏 */ public Builder setNavBackHidden(boolean navBackHidden) /** * 设置返回按钮相对于屏幕位置 * * @param navBackOffsetX 相对于屏幕左侧X偏移 * @param navBackOffsetY 相对于屏幕顶部Y偏移 * @param navBackOffsetRightX 相对于屏幕右侧X偏移 * @param navBackOffsetBottomY 相对于屏幕底部Y偏移 */ public Builder setNavBackOffset(Integer navBackOffsetX, Integer navBackOffsetY, Integer navBackOffsetRightX, Integer navBackOffsetBottomY) /** * 设置返回按钮的宽度 */ public Builder setNavBackWidh(int navBackWidh) /** * 设置返回按钮的高度 */ public Builder setNavBackHeight(int navBackHeight) /** * 设置导航栏是否隐藏 */ public Builder setNavHidden(boolean navHidden) /** * 设置导航栏是否透明 */ public Builder setNavTransparent(boolean navTransparent) /** * 设置背景图片 */ public Builder setBackgroundImgPath(String backgroundImgPath) /** * 设置背景图片 */ public Builder setBackgroundImgDrawable(Drawable backgroundImgDrawable) /** * 设置背景颜色,默认白色 */ public Builder setBackgroundColor(int backgroundColor) /** * 设置logo图片 */ public Builder setLogoImgPath(String logoImgPath) /** * 设置logo图片 */ public Builder setLogoImgDrawable(Drawable logoImgDrawable) /** * 设置是否隐藏logo */ public Builder setLogoHidden(boolean logoHidden) /** * 设置logo padding top */ public Builder setLogoPaddingTop(int logoPaddingTop) /** * 设置logo padding bottom */ public Builder setLogoPaddingBottom(int logoPaddingBottom) /** * 设置logo图标宽度 */ public Builder setLogoWidth(int logoWidth) /** * 设置logo图标高度 */ public Builder setLogoHeight(int logoHeight) /** * 设置logo相对于屏幕位置 * * @param logoOffsetX 相对于屏幕左侧X偏移 * @param logoOffsetY 相对于屏幕顶部Y偏移 * @param logoOffsetRightX 相对于屏幕右侧X偏移 * @param logoOffsetBottomY 相对于屏幕底部Y偏移 */ public Builder setLogoOffset(Integer logoOffsetX, Integer logoOffsetY, Integer logoOffsetRightX, Integer logoOffsetBottomY) /** * 设置脱敏号码颜色 */ public Builder setNumberColor(int numberColor) /** * 设置脱敏号码大小 */ public Builder setNumberTextSize(int numberTextSize) /** * 设置号码栏的宽度 */ public Builder setNumberWidth(int numberWidth) /** * 设置号码栏的高度 */ public Builder setNumberHeight(int numberHeight) /** * 设置手机号相对于屏幕位置 * * @param numberOffsetX 相对于屏幕左侧X偏移 * @param numberOffsetY 相对于屏幕顶部Y偏移 * @param numberOffsetRightX 相对于屏幕右侧X偏移 * @param numberOffsetBottomY 相对于屏幕底部Y偏移 */ public Builder setNumberOffset(Integer numberOffsetX, Integer numberOffsetY, Integer numberOffsetRightX, Integer numberOffsetBottomY) /** * 设置slogan字体颜色 */ public Builder setSloganTextColor(int sloganTextColor) /** * 设置slogan字体大小 */ public Builder setSloganTextSize(int sloganTextSize) /** * 设置slogan相对于屏幕位置 * * @param sloganOffsetX 相对于屏幕左侧X偏移 * @param sloganOffsetY 相对于屏幕顶部Y偏移 * @param sloganOffsetRightX 相对于屏幕右侧X偏移 * @param sloganOffsetBottomY 相对于屏幕底部Y偏移 */ public Builder setSloganOffset(Integer sloganOffsetX, Integer sloganOffsetY, Integer sloganOffsetRightX, Integer sloganOffsetBottomY) /** * 设置登录按钮文字 */ public Builder setLogBtnText(String logBtnText) /** * 设置登录按钮字体颜色 */ public Builder setLogBtnTextColor(int logBtnTextColor) /** * 设置登录按钮字体大小 */ public Builder setLogBtnTextSize(int logBtnTextSize) /** * 设置登录按钮宽度 */ public Builder setLogBtnWidth(int logBtnWidth) /** * 设置登录按钮高度 */ public Builder setLogBtnHeight(int logBtnHeight) /** * 设置登录按钮背景图片 */ public Builder setLogBtnBackgroundPath(String logBtnBackgroundPath) /** * 设置登录按钮背景图片 */ public Builder setLogBtnBackgroundDrawable(Drawable logBtnBackgroundDrawable) /** * 设置登录按钮相对于屏幕位置 * * @param logBtnOffsetX 相对于屏幕左侧X偏移 * @param logBtnOffsetY 相对于屏幕顶部Y偏移 * @param logBtnOffsetRightX 相对于屏幕右侧X偏移 * @param logBtnOffsetBottomY 相对于屏幕底部Y偏移 */ public Builder setLogBtnOffset(Integer logBtnOffsetX, Integer logBtnOffsetY, Integer logBtnOffsetRightX, Integer logBtnOffsetBottomY) /** * 设置隐私条款1的文字和链接 */ public Builder setAppPrivacyOne(String name, String url) /** * 设置隐私条款2的文字和链接 */ public Builder setAppPrivacyTwo(String name, String url) /** * 设置隐私条款基础颜色和条款颜色 */ public Builder setAppPrivacyColor(int baseColor, int privacyColor) /** * 设置隐私条款按钮相对于屏幕位置 * * @param privacyOffsetX 相对于屏幕左侧X偏移 * @param privacyOffsetY 相对于屏幕顶部Y偏移 * @param privacyOffsetRightX 相对于屏幕右侧X偏移 * @param privacyOffsetBottomY 相对于屏幕底部Y偏移 */ public Builder setPrivacyOffset(Integer privacyOffsetX, Integer privacyOffsetY, Integer privacyOffsetRightX, Integer privacyOffsetBottomY) /** * 设置复选按钮是否隐藏 */ public Builder setCheckboxHidden(boolean checkboxHidden) /** * 设置复选按钮是否默认为选中状态 */ public Builder setCheckboxChecked(boolean checkboxChecked) /** * 设置隐私条款是否左对齐,默认居中对齐 */ public Builder setPrivacyGravityLeft(boolean privacyGravityLeft) /** * 设置隐私条款文字大小 */ public Builder setPrivacyTextSize(int privacyTextSize) public Builder setPrivacyDecorator(String firstDecorator, String secondDecorator, String thirdDecorator, String fourthDecorator) /** * 设置切换方式视图是否可见 */ public Builder setSwitchHidden(boolean switchHidden) /** * 设置切换方式文字 */ public Builder setSwitchText(String switchText) /** * 设置切换方式视图字体颜色 */ public Builder setSwitchTextColor(int switchTextColor) /** * 设置切换文字大小 */ public Builder setSwitchTextSize(int switchTextSize) /** * 设置切换方式视图的点击事件 */ public Builder setSwitchClicker(View.OnClickListener switchClicker) /** * 设置复选框样式 */ public Builder setCheckboxDrawable(String checkboxDrawable) /** * 设置复选按钮是否与隐私条款居中显示 */ public Builder setCheckboxCenter(boolean checkboxCenter) /** * 设置切换方式按钮相对于屏幕位置 * * @param switchOffsetX 相对于屏幕左侧X偏移 * @param switchOffsetY 相对于屏幕顶部Y偏移 * @param switchOffsetRightX 相对于屏幕右侧X偏移 * @param switchOffsetBottomY 相对于屏幕底部Y偏移 */ public Builder setSwitchOffset(Integer switchOffsetX, Integer switchOffsetY, Integer switchOffsetRightX, Integer switchOffsetBottomY) /** * 设置是否以Dialog方式显示 */ public Builder setShowDialog(boolean isDialog) /** * 设置Dialog大小 */ public Builder setDialogSize(Integer dialogWidth, Integer dialogHeight) /** * 设置Dialog透明度 */ public Builder setDialogDimAmount(float dialogDimAmount) /** * 设置Dialog相对位置 */ public Builder setDialogGravity(int dialogGravity) /** * 设置Dialog偏移量 */ public Builder setDialogOffset(Integer dialogOffsetX, Integer dialogOffsetY) /** * 添加自定义视图 */ public Builder addCustomView(View view, View.OnClickListener onClickListener) /** * 自定义正在加载的视图 */ public Builder setLoadingView(View loadingView) /** * 设置NavigationBar的颜色 */ public Builder setNavigationBarColor(Integer navigationBarColor) /** * 设置NavigationBar Divider的颜色 */ public Builder setNavigationBarDividerColor(Integer navigationBarDividerColor) /** * 设置登录按钮监听 */ public Builder setLoginClicker(View.OnClickListener loginClicker) /** * 设置运营商隐私条款响应事件 * * @param operatorPrivacyClicker 响应事件 * @param showByApp 是否有应用展示运营商协议信息,默认false */ public void setOperatorPrivacyClicker(PrivacyClickListener operatorPrivacyClicker, boolean showByApp) /** * 设置隐私条款1的点击响应事件 */ public Builder setAppPrivacyOneClicker(PrivacyClickListener appPrivacyOneClicker) /** * 设置隐私条款2的点击响应事件 */ public Builder setAppPrivacyTwoClicker(PrivacyClickListener appPrivacyTwoClicker) /** * 设置slogan的PaintFlags */ public Builder setSloganPaintFlags(Integer flags) /** * 同Toast系统方法作用一致 */ public Builder setToastDuration(Integer toastDuration) /** * 同Toast系统方法作用一致 */ public Builder setToastGravity(Integer toastGravity, Integer toastXOffset, Integer toastYOffset) /** * 同Toast系统方法作用一致 */ public Builder setToastMargin(Float toastHorizontalMargin, Float toastVerticalMargin) /** * 设置未选中复选框的提示信息 */ public Builder setUncheckToastText(CharSequence uncheckToastText)
关闭一键登录授权页Activity
/** * 关闭一键登录授权页面 */ public void finishAuthActivity()
您可参考授权页设计规范来定制化页面 https://www.au2882.com.cn/yjdl/102b.html

5. 打印日志

LoginHelper.getInstance().setDebug();

6.释放资源

LoginHelper.getInstance().destroy();

7.混淆

以下混淆必须配置,否则一键登录失败,配置如下:
# 移动 -keep class com.cmic.** {*; } # 电信 -keep class cn.com.chinatelecom.account.** {*; } # 一键登录 -keep class cc.quicklogin.** {*; }