logo
logo
请输入关键词搜索产品或者文档
中国

中国站

创蓝云智

国际站

Innopaas

Android SDK集成文档

更新时间:2026-07-17 14:52:24

一.准备工作

概述

本文是创蓝闪验 SDK_Android 端接入文档,用于指导 SDK 的集成使用。在对接之前您需要花 5-10 分钟阅读以下条目,可减少对接过程中的问题。

合规性说明

详见SDK初始化合规性指南

能力介绍

一键登录:SDK获取当前流量卡对应的token,通过服务端可置换当前流量卡的手机号码。

本机校验:SDK获取当前流量卡对应的token,提供手机号码,通过服务端可校验提供的手机号是否为当前流量卡的手机号码。

注意:本机校验和一键登录是两个单独的能力,两者的token不能互用,否则会报"应用能力不匹配",请根据需求选择对应能力。

前置条件

  • 创蓝闪验 SDK 支持 minSdkVersion 16 及以上版本
  • 创蓝闪验 SDK 支持中国移动 3/4G/5G、联通 3/4G/5G、电信 4G/5G 的取号能力,在 3G 网络下时延会更高
  • 创蓝闪验 SDK 支持单数据网络、数据网络与 WiFi 网络双开,不支持单 WiFi 网络
  • 对于双卡手机,创蓝闪验 SDK 只对当前流量卡取号,双卡均未开数据流量 SDK 将会返回错误码

注意:一键登录成功率会受网络环境、SIM卡状态等影响,不能作为唯一登录方式,请确保有其他降级兜底登录方式,避免造成自身APP功能异常。建议在拉起授权页回调结果处做降级逻辑处理。

创建应用

应用的创建流程及APPID的获取,请查看「账号创建」文档

注意:应用 AppId 与包名、包签名一一绑定,如果应用有多个包名或签名不同的应用,须创建多个对应包名和签名的应用,否则初始化会报包名或签名校验不通过。

快速体验 demo

开发环境搭建

本地集成

a.将 SDK 中 libs 目录下的 aar 包拷贝到您工程的 libs 目录下,如没有该目录需新建。

b.在 build 文件的 dependencies 中添加 aar 包依赖:

repositories {
    flatDir {
        dirs '../app/libs'
    }
}
dependencies {implementation fileTree(include: ['*.aar'], dir: 'libs')}

权限配置

必要权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>

配置权限说明

权限名称权限说明使用说明
INTERNET允许应用程序联网用于访问网关和认证服务器
ACCESS_WIFI_STATE允许访问 WiFi 网络状态信息允许程序访问 WiFi 网络状态信息
ACCESS_NETWORK_STATE允许访问网络状态区分移动网络或 WiFi 网络
CHANGE_NETWORK_STATE允许改变网络连接状态设备在 WiFi 跟数据双开时,强行切换使用数据网络
CHANGE_WIFI_STATE允许改变 WiFi 网络连接状态设备在 WiFi 跟数据双开时,强行切换使用数据网络

注册授权页 activity

在 application 标签内配置授权登录 activity,screenOrientation 和 theme 可以根据项目需求自行修改

<!-- *******************************授权页*********************************** -->
<activity
   android:name="com.chuanglan.shanyan_sdk.view.ShanYanOneKeyActivity"
   android:configChanges="keyboardHidden|orientation|screenSize"
   android:launchMode="singleTop"
   android:screenOrientation="behind"
    />
<!-- *******************************协议页*********************************** -->
<activity
   android:name="com.chuanglan.shanyan_sdk.view.CTCCPrivacyProtocolActivity"
   android:configChanges="keyboardHidden|orientation|screenSize"
   android:launchMode="singleTop"
   android:screenOrientation="behind"
    />

配置对 http 协议的支持

两种方式(任选其一):

方式一:在 application 标签中配置 usesCleartextTraffic,示例如下

<application
    android:name=".view.MyApplication"
    ***
    android:usesCleartextTraffic="true"
    ></application>

方式二:将域名 10010.com 设置为白名单,示例如下

<application
    android:name=".view.MyApplication"
    ***
    android:networkSecurityConfig="@xml/network_security_config"
    ></application>

[network_security_config.xml]文件:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">10010.com</domain>
    </domain-config>
</network-security-config>

混淆规则

-dontwarn com.cmic.gen.sdk.**
-keep class com.cmic.gen.sdk.**{*;}
-dontwarn cn.com.chinatelecom.account.**
-keep class cn.com.chinatelecom.account.**{*;}
-keep class com.unicom.online.account.shield.** {*;}
-keep class com.unicom.online.account.kernel.** {*;}
-keep class com.chuanglan.shanyan_sdk.**{*;}

资源压缩过滤

如果使用 AndResGuard 资源压缩,需添加过滤,参考 demo 示例:

"R.anim.umcsdk*",
"R.drawable.umcsdk*",
"R.layout.layout_shanyan*",
"R.id.shanyan_view*",

如果使用系统 shrinkResources true,需要在 raw/keep 里面配置资源过滤[keep.xml]

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:keep="R.anim.umcsdk*,
    R.drawable.umcsdk*,
    R.layout.layout_shanyan*,
    R.id.shanyan_view*" />

添加示例:

img

通过上面的几个步骤,工程就配置完成了,接下来就可以在工程中使用创蓝闪验 SDK 进行开发了。

二.一键登录 api

1.初始化

初始化init方法包括本地初始化和网络初始化。本地初始化:初始化appid、context等信息;网络初始化:获取账号信息、参数配置信息等。 ● 初始化会采集信息,建议放到同意隐私协议后调用。 ● 调用SDK其他流程方法前,请确保已调用过初始化,一个APP启动周期只调用一次即可。 ● 初始化有网络请求,不要重试、频繁或循环调用,SDK内部自带重试机制。 方法原型

public void init(Context context, String appId, InitListener initListener)

参数描述

参数类型说明
contextContext传 ApplicationContext 对象
appIdString创蓝闪验平台获取到的 appId
initListenerInitListener初始化回调监听

示例代码

   OneKeyLoginManager.getInstance().init(getApplicationContext(), appId, new InitListener() {
                            @Override
                            public void getInitStatus(int code, String result) {
                            }
                        });

getInitStatus(int code, String result)返回参数 code 和 result,含义如下:

字段类型含义
codeintcode 为 1022:成功;其他:失败
resultString初始化结果描述

2.预取号

【可选方法】获取取号临时凭证,缩短拉起授权页时间。 ● 建议在调用拉起授权页前2~3秒调用,可以缩短拉起授权页耗时;如果启动APP就需要展示授权页(没有2~3秒间隔时间),不需要调用预取号。 ● 预取号会指定使用数据流量请求,避免大量资源下载时调用(如游戏加载资源或者更新补丁时),防止超时。 ● 请勿与拉起授权页同时或之后调用,否则可能会有异常。

示例代码:

OneKeyLoginManager.getInstance().getPhoneInfo(new GetPhoneInfoListener() {
    @Override
    public void getPhoneInfoStatus(int code, String result) {
    }
});

getPhoneInfoStatus(int code, String result)返回参数 code 和 result,含义如下:

字段类型含义
codeIntcode 为 1022:成功;其他:失败
resultString预取号结果描述

3.拉起授权页&获取 token

调用此方法会启动一键登录授权页,用户授权后将返回认证token。

● 拉起授权页方法会启一键登录授权页面。已登录状态请勿调用 。 ● 一键登录成功率会受网络环境、SIM卡状态等影响,不能作为唯一登录方式,建议在拉起授权页回调结果处(即OpenLoginAuthListener回调code不等于1000时)做降级逻辑处理,避免造成自身APP功能异常。 ● 每次调用拉起授权页方法前均需先调用授权页界面配置方法,否则授权页可能会展示异常。 ● 不要连续调用或者在授权页已经展示时调用,否则会返回失败。 ● 拉起一次授权页,登录按钮最多只能点击4次,第五次默认会置灰,不返回信息。

方法原型:

public void openLoginAuth(boolean isFinish, OpenLoginAuthListener openLoginAuthListener, OneKeyLoginListener oneKeyLoginListener){}

参数描述

字段类型含义
isFinishboolean点击授权页一键登录按钮有回调时是否自动销毁授权页:true:自动销毁 false:不自动销毁,开发者需主动调用销毁授权页方法进行授权页销毁操作
openLoginAuthListenerOpenLoginAuthListener授权页是否拉起成功监听
oneKeyLoginListenerOneKeyLoginListener点击授权页登录按钮及返回键监听(code 等于 1011 为点击返回键(包括物理返回键),其他均为点击一键登录按钮的回调)

示例代码

OneKeyLoginManager.getInstance().openLoginAuth(false, new OpenLoginAuthListener() {
    @Override
    public void getOpenLoginAuthStatus(int code, String result) {
    }
}, new OneKeyLoginListener() {
    @Override
    public void getOneKeyLoginStatus(int code, String result) {
    }
});

getOpenLoginAuthStatus(int code,String result)返回参数 code 和 result,含义如下:

字段类型含义
codeintcode 为 1000:授权页成功拉起其他:失败
resultString打开授权页结果描述

getOneKeyLoginStatus(int code,String result)返回参数 code 和 result,含义如下:

字段类型含义
codeintcode 为 1000:成功 其他:失败 (包含点击返回键 code==1011)
resultString结果描述

当外层 code 为 1000 时,result 的返回示例格式为

{
  "token": "A1-Gv-q1ORHeOOZyFe261VJAD_JetfjvVNzJyoQqJxq_lSY39xXmtagZ0VA66IMr7htOQWSHBhnvM4wNDJlZV0DsUtGZDU640ItGCdYuA0N0k3cjkcg4omJWm_1YEMEa55TE-cCo6DsE3LAsc7nmzp5ortoS9f5QjBV9RGGBQYDbX74Er2N9Or8alWzAyP5KzvhJ3mUe3gQFWjYomTpw-fohsjv8ldi0AqaBUxYittipt3l69j3uMK07WAWe_kmSj1biQvbs5hVnCKofFXyvhw_9A"
}

含义如下:

字段类型含义
tokenString置换手机号接口所需的 token。每个 token 只能使用一次,一次有效。

4.置换手机号

当一键登录外层 code 为 1000 时,会获取到置换手机号所需的 token。请参考「服务端」文档来实现获取手机号码的步骤

5.其他 API

a.设置 log 开关

OneKeyLoginManager.getInstance().setDebug(true);

注:需要放到 SDK 初始化之前调用,用 ProcessShanYanLogger 可以过滤方法调用及回调等信息,用 UIShanYanLogger 可以过滤 UI 配置相关日志,用 ActivityLifecycleShanYanLogger 可以过滤界面生命周期相关日志。

b.设置 loading 显示状态

点登录按钮时默认会显示 loading,本方法可在 loading 显示后改变 loading 状态时调用,如果需要点击登录按钮不显示 loading,请请看常见问题

 OneKeyLoginManager.getInstance().setLoadingVisibility(false);

参数描述

参数类型说明
visibilityboolean点击一键登录后,授权页展示的 loading view(设置 true 显示;false 隐藏)

c.设置协议勾选框状态

本方法仅在授权页拉起后想改变 CheckBox 状态时使用,设置进入授权页时的默认状态,请使用授权页配置 ShanYanUIConfig 里面的 setPrivacyState 方法

 OneKeyLoginManager.getInstance().setCheckBoxValue(false);

参数描述

参数类型说明
isCheckedboolean设置协议复选框是否选中(设置 true 选中;false 未选中)

d.清理预取号缓存

OneKeyLoginManager.getInstance().clearScripCache(getApplicationContext());

e.获取运营商类型

OneKeyLoginManager.getInstance().getOperatorType(getApplicationContext());

返回值 5 种:CMCC、CUCC、CTCC、CMHK、UNKNOWN_OPERATOR;

释义:CMCC(中国移动);CUCC(中国联通);CTCC(中国电信);CMHK(中国移动香港) ;Unknown_Operator(无 SIM 卡或非三网运营商)

f.设置预取号超时时间

需要初始化之前调用,方法原型:

OneKeyLoginManager.getInstance().setTimeOutForPreLogin(8);

参数描述

参数类型说明
timeint超时时间;单位秒,不设置默认 6

注:不建议设置小于 4 的值,否则可能会导致超时的概率增加。

g.获取运营商信息

OneKeyLoginManager.getInstance().getOperatorInfo(getApplicationContext());

返回示例:

{"telecom":"CTCC",
 "protocolName":"天翼服务及隐私协议",
 "protocolUrl":"https:\/\/e.189.cn\/sdk\/agreement\/detail.do?hidetop=true"}

返回信息描述

字段类型含义
telecomString当前流量卡运营商类型,共5种情况:CMCC(中国移动);CUCC(中国联通);CTCC(中国电信);CMHK(中国移动香港) ; Unknown_Operator(无 SIM 卡或非三网运营商)
protocolNameString当前流量卡对应的协议名称
protocolUrlString当前流量卡对应的协议链接

h.授权页协议点击事件监听

      OneKeyLoginManager.getInstance().setPrivacyOnClickListener((url, name) -> {
        });

返回参数:

字段类型含义
urlString点击的协议链接
nameString点击的协议名称

i.设置是否只允许主进程调用

OneKeyLoginManager.getInstance().checkProcessesEnable(false);

参数描述

参数类型说明
enablebooleantrue:只在主进程可以调用;false:不判断进程;默认:true

j.授权页点击事件监听

需要对授权页点击事件监听的用户,可调用此方法监听授权页点击事件,无此需求可以不写。

   OneKeyLoginManager.getInstance().setActionListener(new ActionListener() {
            @Override
            public void ActionListner(int type, int code, String message) {
            }
        });

ActionListners(int type,int code,String message)返回参数含义如下:

字段类型含义
typeinttype=1 ,隐私协议点击事件 type=2 ,checkbox 点击事件 type=3 ,一键登录按钮点击事件
codeinttype=1 ,隐私协议点击事件,code 分为 0,1,2,3(协议页序号)type=2 ,checkbox 点击事件,code 分为 0,1(0 为未选中,1 为选中)type=3 ,一键登录点击事件,code 分为 0,1(0 为协议未勾选时,1 为协议勾选时)
messageString点击事件的详细信息

k.销毁授权页

A.自动销毁

1.在授权登录页面,当用户主动点击左左上角返回按钮时,返回码为 1011,授权页面将自动销毁授权页;

2.当用户点击物理返回键返回键(相当于取消登录),返回码为 1011,授权页面将自动销毁授权页

3.当用户设置一键登录或者其他自定义控件为自动销毁时,得到回调后,授权页面将自动销毁

B.手动销毁

OneKeyLoginManager.getInstance().finishAuthActivity();

注意:销毁授权页时,请不要在销毁后回到的界面主线程中做耗时操作,避免堵塞授权页 onDestroy 方法,导致再次调用拉起授权页时报请求频繁。

l.跳转到 SDK 内部协议页

 public void startPrivacyProtocolActivity(Context context, String url, String name){}

参数描述

参数类型说明
contextContext上下文
urlurl协议链接
namename协议名称

m.授权页启动|销毁监听

        OneKeyLoginManager.getInstance().setLoginActivityStatusListener(new LoginActivityStatusListener() {
            @Override
            public void onActivityCreated(Activity activity) {
            }
            @Override
            public void onActivityDestroyed(Activity activity) {
            }
        });

n.获取授权页协议勾选框 CheckBox 对象

需要在授权页 activity 创建后并且未销毁的情况下调用。

CheckBox privacyCheckBox=OneKeyLoginManager.getInstance().getPrivacyCheckBox();

o.配置初始化支持ipv6

初始化之前调用。

OneKeyLoginManager.getInstance().ipv6Enable(true);

6.授权页界面配置

可选方法,SDK 有内置默认授权页配置,如需自定义界面,请调用此方法。

a.设计规范

注意:

1、开发者不得通过任何技术手段,破解授权页,或将授权页面的号码栏、隐私栏、登录按钮隐藏、覆盖。

2、登录按钮文字描述必须包含“登录”或“注册”等文字,不得诱导用户授权。

3、对于接入SDK并上线的应用,我方会对上线的应用授权页面做审查,如果有出现未按要 求弹出或设计授权页面的,将关闭应用的认证取号服务。

b.授权页配置

调用该方法可实现对三网运营商授权页面个性化设计,配置一次有效,每次调用拉起授权页方法前必须先调用该方法,否则授权界面会展示异常,具体实现可参考 demo 示例的 ConfigUtils 配置类。(三网界面配置内部实现逻辑不同,请务必使用移动、联通、电信卡分别测试

方法原型

public void setAuthThemeConfig(ShanYanUIConfig shanYanPortraitUIConfig, ShanYanUIConfig shanLandYanUIConfig) {}

参数说明

参数参数类型说明
shanYanPortraitUIConfigShanYanUIConfig竖屏页面配置对象,开发者可调用 ShanYanUIConfig.java 类中对应元素的配置方法对授权页竖屏样式进行个性化配置
shanLandYanUIConfigShanYanUIConfig横屏页面配置对象,开发者可调用 ShanYanUIConfig.java 类中对应元素的配置方法对授权页横屏样式进行个性化配置
  • 对于支持横竖屏自由切换的应用,shanYanPortraitUIConfig、shanLandYanUIConfig 需要分别配置。
  • 对于已指定屏幕方向为竖屏的应用,只配置 shanYanPortraitUIConfig 即可。
  • 对于已指定屏幕方向为横屏的应用,只配置 shanLandYanUIConfig 即可。

示例代码

OneKeyLoginManager.getInstance().setAuthThemeConfig(ConfigUtils.getCJSConfig(getApplicationContext()), ConfigUtils.getCJSLandscapeUiConfig(getApplicationContext()))

背景

三选一,支持图片,gif 图,视频;注意:如果通过自定义控件配置图片,图片伸入不到状态栏

方法参数类型说明
setAuthBGImgPathDrawable设置授权页背景图片
setAuthBgGifPathString只支持本地 gif 图,需要放置到 drawable 文件夹中。传入图片名称即可。
setAuthBgVideoPathString支持本地路径如:"android.resource://" + context.getPackageName() + "/" + R.raw.testvideo"支持网络路径:"https://xxx"

整体属性

方法参数类型说明
setActivityTranslateAnimstring设置授权页进出场动画(默认跟随系统):参数 1:进场动画传 xml 文件名即可参数 2:退场动画传 xml 文件名即可
setTextSizeIsdpboolean设置固有控件字体是否以 dp 为单位(true:dp;false:sp;默认:false)
setBackPressedAvailableboolean设置授权页物理返回键是否可用(true:可用;false:禁用;默认:true;禁用后仍会执行 getOneKeyLoginStatus 回调,只是不销毁授权页)
setBackNavigationEnabledboolean设置授权页是否启用Android 13(API 33)引入的新后退导航架构-预测性返回手势系统(true:启用;false:禁用;默认:true;禁用后点击返回无回调信息)
setPrivacyBackNavigationEnabledboolean设置协议页是否启用Android 13(API 33)引入的新后退导航架构-预测性返回手势系统(true:启用;false:禁用;默认:true;禁用后点击返回会直接关闭协议页,不会检测协议页内是否有多级跳转)
setFitsSystemWindowsboolean同系统 setFitsSystemWindows;视频背景需要伸入到状态栏时可以调用此方法
setFullScreenboolean是否全屏展示,会隐藏掉顶部状态栏和底部导航栏(true:全屏;false:正常显示;默认:false)
setAuthFlagSecureEnableboolean进入后台列表时授权页是否模糊显示及授权页是否允许屏幕截图和录屏(true:显示空白页、不支持屏幕截图和录屏;false:正常显示,不做处理;默认:false)
setPrivacyFlagSecureEnableboolean进入后台列表时协议页是否模糊显示及协议页是否允许屏幕截图和录屏(true:显示空白页、不支持屏幕截图和录屏;false:正常显示,不做处理;默认:false)

状态栏

方法参数类型说明
setStatusBarColorint设置状态栏背景颜色(默认透明)
setLightColorboolean设置状态栏字体颜色是否为白色(true:白色;false:不是白色;默认:false)
setStatusBarHiddenboolean设置状态栏是否隐藏(true:隐藏;false:不隐藏;默认:false)
setVirtualKeyTransparentboolean设置虚拟键是否透明(true:透明;false:不透明;默认:false)

导航栏(默认高度:50dp)

方法参数类型说明
setNavColorint设置导航栏背景颜色(默认:0xffffffff)
setNavTextstring设置导航栏标题文字(默认:免密登录)
setNavTextColorint设置导航栏标题文字颜色(默认:0xff080808)
setNavTextSizeint(单位 sp)设置导航栏标题文字大小(默认:16sp)
setNavReturnImgPathDrawable设置导航栏返回按钮图标
setNavReturnImgHiddenboolean设置导航栏返回按钮是否隐藏(true:隐藏;false:不隐藏;默认:false)
setNavReturnBtnWidthint(单位 dp)设置导航栏返回按钮宽度(默认 25dp)
setNavReturnBtnHeightint(单位 dp)设置导航栏返回按钮高度(默认 25dp)
setNavReturnBtnOffsetRightXint(单位 dp)设置导航栏返回按钮距离屏幕右侧 X 偏移(默认:以 setNavReturnBtnOffsetX 为准)
setNavReturnBtnOffsetXint(单位 dp)设置导航栏返回按钮距离屏幕左侧 X 偏移(默认:8dp)
setNavReturnBtnOffsetYint(单位 dp)设置导航栏返回按钮距离屏幕上侧 Y 偏移(默认:8dp)
setAuthNavHiddenboolean设置导航栏是否隐藏(true:隐藏;false:不隐藏;默认:false)
setAuthNavTransparentboolean设置导航栏是否透明(true:透明;false:不透明;默认:true)
setNavTextBoldboolean设置导航栏字体是否加粗(true:加粗;false:不加粗;默认:false)

logo 图标

方法参数类型说明
setLogoImgPathDrawable设置 logo 图片
setLogoWidthint(单位 dp)设置 logo 宽度(默认:75dp)
setLogoHeightint(单位 dp)设置 logo 高度(默认:75dp)
setLogoOffsetYint(单位 dp)设置 logo 相对于标题栏下边缘 y 偏移(默认:50dp)
setLogoOffsetBottomYint(单位 dp)设置 logo 相对于屏幕底部 y 偏移(默认:以 setLogoOffsetY 为准)
setLogoHiddenboolean设置 logo 是否隐藏(true:隐藏;false:不隐藏;默认:false)
setLogoOffsetXint(单位 dp)设置 logo 相对屏幕左侧 X 偏移(默认:水平居中)

号码栏

方法参数类型说明
setNumberColorint设置号码栏字体颜色(默认:0xff333333)
setNumFieldOffsetYint(单位 dp)设置号码栏相对于标题栏下边缘 y 偏移(默认:140dp)
setNumFieldOffsetBottomYint(单位 dp)设置号码栏相对于屏幕底部 y 偏移(默认:以 setNumFieldOffsetY 为准)
setNumFieldWidthint(单位 dp)设置号码栏宽度(默认:自适应)
setNumFieldHeightint(单位 dp)设置号码栏高度(默认:自适应)
setNumberSizeint(单位 sp)设置号码栏字体大小(默认:18sp)
setNumFieldOffsetXint(单位 dp)设置号码栏相对屏幕左侧 X 偏移(默认:水平居中)
setNumberBoldboolean设置号码栏字体是否加粗(true:加粗;false:不加粗,默认:false)

登录按钮(默认高度:46dp)

方法参数类型说明
setLogBtnTextstring设置登录按钮文字(默认:本机号码一键登录)
setLogBtnTextColorint设置登录按钮文字颜色
setLogBtnBackgroundColorint设置登录按钮背景色
setLogBtnImgPathDrawable设置授权登录按钮图片
setLogBtnOffsetYint(单位 dp)设置登录按钮相对于标题栏下边缘 Y 偏移(默认:220dp)
setLogBtnOffsetBottomYint(单位 dp)设置登录按钮相对于屏幕底部 Y 偏移(默认:以 setLogBtnOffsetY 为准)
setLogBtnTextSizeint(单位 sp)设置登录按钮字体大小(默认:15sp)
setLogBtnHeightint(单位 dp)设置登录按钮高度(默认:46dp)
setLogBtnWidthint(单位 dp)设置登录按钮宽度(默认:屏幕宽减 94dp,即两边各 47dp)
setLogBtnOffsetXint(单位 dp)设置登录按钮相对屏幕左侧 X 偏移(默认:水平居中)
setLogBtnTextBoldboolean设置登录按钮字体是否加粗(true:加粗;false:不加粗;默认:false)

隐私栏

方法参数类型说明
setAppPrivacyOnestring(链接)设置开发者隐私条款 1 名称和 URL 参数 1:名称参数 2:url
setAppPrivacyTwostring(链接)设置开发者隐私条款 2 名称和 URL 参数 1:名称参数 2:url
setAppPrivacyThreestring(链接)设置开发者隐私条款 3 名称和 URL 参数 1:名称参数 2:url
setPrivacySmhHiddenboolean设置协议名称是否显示书名号《》,默认显示书名号(true:不显示;false:显示;默认:false)
setPrivacyTextSizeint(单位 sp)设置隐私栏字体大小(默认:10sp)
setAppPrivacyColorint设置隐私条款名称颜色参数 1:基础文字颜色(默认:0xff666666)参数 2 : 协议文字颜色(默认:0xff0085d0)
setPrivacyOffsetBottomYint(单位 dp)设置隐私条款相对于授权页面底部下边缘 y 偏移(默认:30dp)
setPrivacyOffsetYint(单位 dp)设置隐私条款相对于授权页面标题栏下边缘 y 偏移(默认:以 setPrivacyOffsetBottomY 为准)
setPrivacyOffsetXint(单位 dp)设置隐私条款相对屏幕左侧 X 偏移(默认:水平居中)
setPrivacyOffsetGravityLeftboolean设置隐私条款文字多行显示时是否左对齐(true:左对齐;false:居中;默认:false)
setPrivacyStateboolean设置隐私条款的 CheckBox 复选框默认状态(true:选中;false:未选中,默认:true)
setUncheckedImgPathDrawable设置隐私条款的 CheckBox 未选中时图片
setCheckedImgPathDrawable设置隐私条款的 CheckBox 选中时图片
setCheckBoxHiddenboolean设置隐私条款的 CheckBox 是否隐藏(true:隐藏;false:不隐藏;默认:false)
setCheckBoxWHint(单位 dp)设置 checkbox 的宽高,包含两个参数:1.宽 2.高(默认:各 13dp)
setPrivacyWidthint(单位 dp)设置隐私栏宽度
setcheckBoxOffsetXYint(单位 dp)设置 checkbox 在协议框父控件中的位置,包含两个参数:1.左偏移量 2.上偏移量(默认:在父控件内居中)
setCheckBoxMarginint(单位 dp)设置 checkbox 热点区域范围,包含四个参数:1.向左扩大 2.向上扩大 3.向右扩大 4.向下扩大(默认:各 10dp)
setPrivacyTextString设置隐私条款名称外的文字,包含五个参数,参数示例(红色 字体为传入参数):同意《》和《》、《》、《》并授权创蓝创蓝闪验获取本机号码参数 1: 同意 参数 2:和参数 3:、参数 4:、参数 5:并授权创蓝闪验获取本机号码
setPrivacyTextLineSpacingfloat设置协议文本行间距,同 textView.setLineSpacing(float add, float mult);
setPrivacyTextBoldboolean设置协议栏字体是否加粗(true:加粗;false:不加粗;默认:false)
setPrivacyCustomToastToast未勾选时,自定义点击一键登录的 Toast 提示
setPrivacyCustomToastTextString未勾选协议时 toast 提示文字(默认:请勾选协议)
setCheckBoxTipDisableboolean未勾选协议时 toast 提示是否关闭(true:关闭,false:开启,默认:false)
setPrivacyNameUnderlineboolean协议是否显示下划线(true:显示;false:不显示;默认:false)
setOperatorPrivacyAtLastboolean运营商协议是否为最后一个显示(true:最后显示;false:显示在最前;默认:false)
setPrivacyGravityHorizontalCenterboolean设置隐私协议栏是否居中显示(true:居中;false:居左;默认:false)
setPrivacyActivityEnabledboolean是否使用 SDK 内置协议页 activity(true:使用;false:不使用,只给回调,由开发者根据回调内容自行实现协议页 activity 及相关跳转;默认:true)

如果需要增加 3 个以上自定义协议,可使用如下方法(具体可参数 demo 示例源码 A 配置):

方法参数类型说明
setMorePrivacyList< ConfigPrivacyBean >ConfigPrivacyBean 为协议配置类,包含三个构造函数,分别是双参、三参、四参。参数按照顺序分别为: name:协议名称,url:协议链接,color:协议文字颜色, midStr:协议之间的文字,title:协议页导航栏标题。可以用构造函数赋值,也可以用对象方法赋值,对应方法分别为:setName,setUrl,setColor,setMidStr,setTitle

构造函数原型

//四参构造函数
public ConfigPrivacyBean(String name, String url, int color, String midStr) 
//三参构造函数
public ConfigPrivacyBean(String name, String url, int color)
//双参构造函数
public ConfigPrivacyBean(String name, String url) 

多协议配置及调用示例

    /**
     * 多协议配置示例
     */
    private static List<ConfigPrivacyBean> getMorePrivacy() {
        List<ConfigPrivacyBean> list = new ArrayList();
        list.add(new ConfigPrivacyBean("闪验隐私政策1", "https://api.253.com.html", Color.parseColor("#cc00cc"), "间隔1"));
        list.add(new ConfigPrivacyBean("闪验隐私政策2", "https://api.253.com.html", Color.parseColor("#00cc00")));
        list.add(new ConfigPrivacyBean("闪验隐私政策3", "https://api.253.com.html"));
        ConfigPrivacyBean bean4 = new ConfigPrivacyBean("闪验隐私政策4", "https://api.253.com.html");
        bean4.setColor(Color.parseColor("#0000cc"));
        bean4.setMidStr("间隔4");
        bean4.setTitle("闪验隐私政策4");
        list.add(bean4);
        ConfigPrivacyBean bean5 = new ConfigPrivacyBean("闪验隐私政策5", "https://api.253.com.html", Color.parseColor("#aacc00"));
        bean5.setMidStr("间隔5");
        bean5.setTitle("闪验隐私政策5");
        list.add(bean5);
        return list;
    }
    //引用多协议配置配置
    ShanYanUIConfig uiConfig = new ShanYanUIConfig.Builder()
      .....
      .setPrivacyText("我已阅读并同意", "默认间隔", "", "", "")
      .setMorePrivacy(getMorePrivacy())
      ....
      .build

如果需要对运营商协议名称、slogan做多语言适配,可使用如下方法:

方法参数类型说明
setOperatorInfoList< OperatorInfoBean >OperatorInfoBean 为协议配置类,包含三个构造函数,分别是单参、双参、三参。参数按照顺序分别为: operatorName:运营商协议名称,operatorUrl:运营商协议链接,operatorSloganName:运营商slogan文字。建议可以用构造函数赋值。

配置示例

/**
 * 运营商信息配置示例
 */
private static List<OperatorInfoBean> getOperatorInfo() {
    List<OperatorInfoBean> list = new ArrayList();
    list.add(new OperatorInfoBean("中国移动协议", "https://aa.bb.com/", "中国移动提供服务"));
    list.add(new OperatorInfoBean("中国联通协议", "https://aa.bb.com/", "中国联通提供服务"));
    list.add(new OperatorInfoBean("中国电信协议", "https://aa.bb.com/", "中国电信提供服务"));
    list.add(new OperatorInfoBean("中国移动香港协议", "https://aa.bb.com/", "中国香港移动提供服务"));
    return list;
}
//调用运营商信息配置示例
    ShanYanUIConfig uiConfig = new ShanYanUIConfig.Builder()
      .....
      .setPrivacyText("我已阅读并同意", "默认间隔", "", "", "")
      .setOperatorInfo(getOperatorInfo())
      ....
      .build

运营商 slogan(提供认证服务)

方法参数类型说明
setSloganTextColorint设置 slogan 文字颜色(默认:0xff999999)
setSloganTextSizeint(单位 sp)设置 slogan 文字字体大小(默认:10sp)
setSloganOffsetYint(单位 dp)设置 slogan 相对于标题栏下边缘 y 偏移(默认:195dp)
setSloganHiddenboolean设置 slogan 是否隐藏(true:隐藏;false:不隐藏;默认:false)
setSloganOffsetBottomYint(单位 dp)设置 slogan 相对屏幕底部 Y 偏移(默认:以 setSloganOffsetY 为准)
setSloganOffsetXint(单位 dp)设置 slogan 相对屏幕左侧 X 偏移(默认:水平居中)
setSloganTextBoldboolean设置 slogan 文字字体是否加粗(true:加粗;false:不加粗;默认:false)

创蓝 slogan(创蓝 253 提供技术支持;默认:隐藏)

方法参数类型说明
setShanYanSloganTextColorint设置创蓝 slogan 文字颜色
setShanYanSloganTextSizeint(单位 sp)设置创蓝 slogan 文字字体大小
setShanYanSloganOffsetYint(单位 dp)设置创蓝 slogan 相对于标题栏下边缘 y 偏移
setShanYanSloganHiddenboolean设置创蓝 slogan 是否隐藏(true:隐藏;false:不隐藏)
setShanYanSloganOffsetBottomYint(单位 dp)设置创蓝 slogan 相对屏幕底部 Y 偏移
setShanYanSloganOffsetXint(单位 dp)设置创蓝 slogan 相对屏幕左侧 X 偏移
setShanYanSloganTextBoldboolean设置创蓝 slogan 文字字体是否加粗(true:加粗;false:不加粗)

登录 loading

方法参数类型说明
setLoadingViewViewGroup设置自定义 loading

添加自定义控件

1.添加相对控件(指定在登录按钮和协议栏之间;默认铺满按钮和协议之间区域)

方法原型

 public Builder setRelativeCustomView(View view, boolean isFinish, int cvMarginLeft, int cvMarginTop, int cvMarginRigth, int cvMarginBottom, ShanYanCustomInterface shanYanCustomInterface) {}      
参数参数类型说明
viewView设置自定义布局
isFinishboolean点击布局是否需要销毁授权页:true 销毁 false 不销毁
cvMarginLeftint(单位 dp)布局左间距
cvMarginTopint(单位 dp)距登录按钮的上边距
cvMarginRigthint(单位 dp)布局右边距
cvMarginBottomint(单位 dp)距协议栏的下边距
shanYanCustomInterfaceShanYanCustomInterface整个 view 的点击事件,如果想设置内部的子view的点击事件,此参数需要传null,并自行实现

注意:使用此方法添加自定义控件时,登录按钮必须使用setLogBtnOffsetY设置偏移,协议栏必须使用 setPrivacyOffsetBottomY 设置偏移,否则可能不显示

2.添加普通自定义控件

方法原型

public ShanYanUIConfig.Builder addCustomView(View view, boolean isFinish, boolean type, ShanYanCustomInterface shanYanCustomInterface) {}

参数说明

参数参数类型说明
view(必填)View自定义控件对象
isFinish(必填)boolean是否需要销毁授权页:true 销毁 false 不销毁
type(必填)boolean设置自定义控件的位置:true 为授权页导航栏 false 为授权页导航栏以下空白处
shanYanCustomInterfaceShanYanCustomInterface自定义控件监听

注意:如果添加布局为自定义控件,监听实现请参考 demo 示例。如果通过自定义控件方法添加授权页背景,背景伸入不到状态栏。

设置弹窗样式

调用该方法可实现将授权页设置成弹窗样式。

方法原型

public ShanYanUIConfig.Builder setDialogTheme(boolean isdialogTheme, int dialogWidth, int dialogHeight, int dialogX, int dialogY ,boolean isDialogBottom) {}

参数说明

参数参数类型说明
isdialogTheme(必填)boolean是否用弹窗样式:true 弹窗样式 false 非弹窗样式
dialogWidth(必填)int(单位 dp)授权页弹窗宽度
dialogHeight(必填)int(单位 dp)授权页弹窗高度
dialogXint(单位 dp)授权页弹窗 X 偏移量(以屏幕中心为原点)
dialogYint(单位 dp)授权页弹窗 Y 偏移量(以屏幕中心为原点)
isDialogBottomboolean授权页弹窗是否贴于屏幕底部:true:显示到屏幕底部,dialogY 参数设置将无效 false:不显示到屏幕底部,以 dialogY 参数为准

注意:设置弹窗效果背景的透明度需要在 Manifest.xml 里面配置授权界面主题样式

样式示例:

1.为授权界面的 activity 设置弹窗 theme 主题:

<activity
   android:name="com.chuanglan.shanyan_sdk.view.ShanYanOneKeyActivity"
   android:configChanges="keyboardHidden|orientation|screenSize"
   android:launchMode="singleTop"
   android:screenOrientation="behind"
    android:theme="@style/Theme.ActivityDialogStyle" />

2.设置 theme 主题的 style 样式

<style name="Theme.ActivityDialogStyle" parent="Theme.AppCompat.Light.NoActionBar">
    <!--背景透明-->
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowIsTranslucent">true</item>
    <!--dialog的整个屏幕的背景是否有遮障层-->
    <item name="android:backgroundDimEnabled">true</item>
</style>

注意:如果需要触摸弹窗外部销毁授权页,style 的 parent 请使用系统 dialog 相关主题。

弹窗样式时的遮盖层灰度设置

方法参数类型说明
setDialogDimAmountfloat授权页遮盖层灰度设置范围是(0~1)

设置横竖屏

在 manifest 文件中,指定授权页 activity 的 screenOrientation 即可

注意:只有全屏不透明的 activity 才能指定方向,否则在 8.0 系统版本上会报“Only fullscreen opaque activities can request orientation”或其他异常。

即:弹框或者透明主题,授权页不能指定方向。如需指定方向,可以指定授权页前个页面的方向,授权页设置跟随前个界面方向,即:“android:screenOrientation="behind"”

隐私协议提示弹框(具体实现见常见问题

方法参数类型说明
addCustomPrivacyAlertViewview添加授权页上显示隐私协议弹框

c.协议页配置

方法参数类型说明
setPrivacyActivityTranslateAnimString设置授权页进出场动画(默认跟随系统):参数 1:进场动画传 xml 文件名即可参数 2:退场动画传 xml 文件名即可
setPrivacyStatusBarHiddenboolean协议页是否隐藏状态栏(true:隐藏,false:不隐藏;默认:false)
setPrivacyStatusBarColorint协议页状态栏颜色(默认:0xffffffff)
setPrivacyLightColorboolean协议页状态栏文字颜色是否为白色(true:白色;false:不是白色;默认:false)
setPrivacyTitleArrayString[]协议页标题名称(默认:授权页对应的协议名称)
setPrivacyNavColorint设置协议页导航栏背景颜色(默认:0xffffffff)
setPrivacyNavTextBoldboolean设置协议页导航栏标题文字是否加粗(true:加粗;false:不加粗;默认:false)
setPrivacyNavTextColorint设置协议页导航栏标题文字颜色(默认:0xff080808)
setPrivacyNavTextSizeint(单位 sp)设置协议页导航栏标题文字大小(默认:16sp)
setPrivacyNavReturnImgPathDrawable设置协议页导航栏返回按钮图标
setPrivacyNavReturnImgHiddenboolean设置协议页导航栏返回按钮是否隐藏(true:隐藏;false:不隐藏;默认:false)
setPrivacyNavReturnBtnWidthint(单位 dp)设置协议页导航栏返回按钮宽度(默认:25dp)
setPrivacyNavReturnBtnHeightint(单位 dp)设置协议页导航栏返回按钮高度(默认:25dp)
setPrivacyNavReturnBtnOffsetRightXint(单位 dp)设置协议页导航栏返回按钮距离屏幕右侧 X 偏移(默认:以 setPrivacyNavReturnBtnOffsetX 为准)
setPrivacyNavReturnBtnOffsetXint(单位 dp)设置协议页导航栏返回按钮距离屏幕左侧 X 偏移(默认:8dp)
setPrivacyNavReturnBtnOffsetYint(单位 dp)设置协议页导航栏返回按钮距离屏幕上侧 Y 偏移(默认:8dp)
setViewPortEnabledboolean协议页 H5 是否支持 viewport 适配(true:支持,false:不支持;默认:false)

三.本机校验 api

1.初始化

同一键登录初始化,如果本机校验和一键登录都需要使用时,只需调用一次初始化。

2.本机校验获取 token

在初始化执行之后调用,本机号校验界面需自行实现,可以在多个需要校验的页面中调用。

示例代码:

 OneKeyLoginManager.getInstance().startAuthentication(new AuthenticationExecuteListener() {
                        @Override
                        public void authenticationRespond(int code, String result) {
                        }
                    });

authenticationRespond(int code,String result)返回参数 code 和 result,含义如下:

字段类型含义
codeintcode 为 2000:成功其他:失败
resultString返回信息

当外层 code 为 2000 时,result 的返回为

{
  "token": ""
}

含义如下:

字段类型含义
tokenString检验手机号接口所需的 token。每个 token 只能使用一次,一次有效。

3.校验手机号

当本机校验获取token监听的code 为 2000 时,会获取到检验手机号所需的 token。请参考「服务端」文档来实现检验手机号码的步骤。

注意:三网运营商内部执行逻辑不同,必须分别使用三网运营商的卡进行测试,防止功能异常

四.返回码

此表为 SDK 外层返回码,如需查看内层码及服务端返回码,请查看官网[返回码]文档

返回码返回码描述
1000一键登录获取 token 成功/拉起授权页成功
1001运营商返回错误
1002运营商信息获取失败,请结合 result 查看具体失败原因
1003一键登录获取 token 失败,请结合 result 查看具体失败原因
1004未初始化
1005预取号请求失败,请结合 result 查看具体失败原因
1006无法识别sim卡或没有sim卡
1007网络请求失败,请结合 result 查看具体失败原因
1008数据流量不稳定
1011点击返回,用户取消免密登录
1014SDK 内部异常,请结合 result 查看具体失败原因
1016APPID 为空
1019其他错误,请结合 result 查看具体失败原因
1022网络初始化、预取号成功
1023初始化、预取号失败,请结合 result 查看具体失败原因
1031请求过于频繁
1032用户禁用
2000本机号校验获取 token 成功
2003本机号校验返回失败,请结合 result 查看具体失败原因
24小时热线 400-9669-253