文档反馈
文档反馈

云信一键登录Android开发文档

一.准备工作

概述

本文是1.0.0 版本SDK的接入文档,用于指导SDK的使用方法,默认读者已经熟悉 IDE(Eclipse 或者 Android Studio)的基本使用方法,以及具有一定的 Android 编程知识基础。

前置条件

本机号码校验使用场景: 用户输入手机号码,通过SDK获取token(通过authenticationRespond获取),服务端携带输入的手机号码和token去运营商网关进行校验(服务端调用mobile-validate接口),返回的结果时用户当前上网使用的号码与输入的号码是否一致。 一键登录使用场景: 用户无需输入手机号码,SDK会拉起授权页,用户确认授权后,SDK会获取token(通过getOneKeyLoginStatus中获取),服务端携带token到运营商网关获取用户当前上网使用的号码(服务端调用mobile-query接口),并返回给APP服务端。

创建应用

应用的创建流程及APPID的获取,请先在控制台创建应用 注意:如果应用有多个包名或签名不同的马甲包,须创建多个对应包名和签名的应用,否则马甲包将报包名或签名校验不通过。 **

快速体验demo

a.将build里面的applicationId换成您的包名 b.将build里面的签名配置改成您的签名配置 c.将build里面的APP_ID换成您在控制台创建应用后生成的appId

开发环境搭建

(1)将开发包拷贝到工程

a.将SDK中libs目录下的aar包拷贝到自己工程的libs目录下,如没有该目录需新建。 b.将SDK中assets目录下login文件拷贝到自己工程的assets目录下,如没有该目录需新建。 (2)配置AndroidManifest.xml文件

必要的权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<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"/>
<uses-permission android:name="android.permission.GET_TASKS"/>

建议的权限:如果选用该权限,需要在预取号步骤前提前动态申请。

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

建议开发者申请本权限,本权限只用于移动运营商在双卡情况下,更精准的获取数据流量卡的运营商类型, 缺少该权限,存在取号失败概率上升的风险。

配置权限说明

权限名称 权限说明 使用说明
INTERNET 允许应用程序联网 用于访问网关和认证服务器
ACCESS_WIFI_STATE 允许访问WiFi网络状态信息 允许程序访问WiFi网络状态信息
ACCESS_NETWORK_STATE 允许访问网络状态 区分移动网络或WiFi网络
CHANGE_NETWORK_STATE 允许改变网络连接状态 设备在WiFi跟数据双开时,强行切换使用数据网络
CHANGE_WIFI_STATE 允许改变WiFi网络连接状态 设备在WiFi跟数据双开时,强行切换使用
READ_PHONE_STATE 允许读取手机状态 (可选)获取IMSI用于判断双卡和换卡
WRITE_SETTINGS 允许读写系统设置项 电信SDK在6.0系统以下进行数据切换用到的权限,添加后可增加电信在WiFi+4G下网络环境下的取号成功率。6.0系统以上可去除
GET_TASKS 允许应用程序访问TASK

在application标签内配置授权登录activity

      <activity
            android:name="com.netease.yunxin.login.view.CmccLoginActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="false"
            android:launchMode="singleTop"
             />
        <activity-alias
            android:name="com.cmic.sso.sdk.login.activity.LoginAuthActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="false"
            android:launchMode="singleTop"
            android:targetActivity="com.netease.yunxin.login.view.CmccLoginActivity"
             /> 
        <activity
            android:name="com.netease.yunxin.login.view.YunXinOneKeyActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="false"
            android:launchMode="singleTop"
             /> 
        <activity
            android:name="com.netease.yunxin.login.view.CTCCPrivacyProtocolActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="false"
            android:launchMode="standard"
             /> 

配置Android9.0对http协议的支持两种方式:

方式一:

android:usesCleartextTraffic="true"

示例代码:

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

方式二:

设置Http白名单,运营商http接口域名:cmpassport.com

(3) 混淆规则:

-dontwarn com.cmic.sso.sdk.login.**
-keep class com.cmic.sso.sdk.login.**{*;}
-dontwarn com.sdk.login.**
-keep class com.sdk.login.** { *;}
-dontwarn com.unicom.xiaowo.account.shield.login.**
-keep class com.unicom.xiaowo.account.shield.login.** {*;}
-keep class cn.com.chinatelecom.account.api.**{*;}

(4) AndResGuard资源压缩过滤:

"R.anim.umcsdk*",
"R.drawable.umcsdk*",
"R.layout.layout_yunxin*",
"R.id.yunxin_view*",

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

二.SDK使用说明

SDK技术逻辑

1.初始化

使用一键登录功能前,必须先进行初始化操作,建议放在Application的onCreate() 方法中。

方法原型

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

参数描述

参数 类型 说明
context Context 传ApplicationContext对象
appId String 控制台生成的appId
initListener InitListener 初始化回调监听,getInitStatu是该监听唯一的抽象方法,即void getInitStatus(int code, String result)

示例代码

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

getInitStatus(int code, String result)方法返回参数分为外层code和result,含义如下:

字段 类型 含义
code Int code为1022:成功;其他:失败
result String 返回信息

注意:初始化不要放在申请权限方法内,否则用户拒绝权限会造成后续方法没有回调。

2.预取号

方法原型:

public void getPhoneInfo(GetPhoneInfoListener getPhoneInfoListener){}

参数描述

参数 类型 说明
getPhoneInfoListener GetPhoneInfoListener 预取号回调监听,getPhoneInfoStatus是该监听中唯一的抽象方法,即void getPhoneInfoStatus(int code, String result)

示例代码:

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

getPhoneInfoStatus(int code, String result)方法返回参数分为外层code和result,含义如下:

字段 类型 含义
code Int code为1022:成功;其他:失败
result String 返回信息

3.拉起授权页

方法原型:

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

参数描述

字段 类型 含义
isFinish boolean 点击授权页一键登录按钮有回调时是否自动销毁授权页:

true:自动销毁 false:不自动销毁,开发者需主动调用销毁授权页方法进行授权页销毁操作 | | openLoginAuthListener | OpenLoginAuthListener | 授权页是否拉起成功监听,getOpenLoginAuthStatus是该接口中唯一的抽象方法,即void getOpenLoginAuthStatus(int code,String result) | | oneKeyLoginListener | OneKeyLoginListener | 点击授权页登录按钮及返回键监听,getPhoneCode是该接口中唯一的抽象方法,即void getOneKeyLoginStatus(int code,String result) (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,含义如下:

字段 类型 含义
code int code为1000:授权页成功拉起

其他:失败 | | result | String | 返回信息 |

getOneKeyLoginStatus(int code,String result)方法返回参数分为外层code和result,含义如下:

字段 类型 含义
code int code为1000:成功

其他:失败 (包含点击返回键 code=1011) | | result | String | 返回信息 |

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

{
"token": ""
}

含义如下:

字段 类型 含义
token String 用来和后台置换手机号。一次有效。

4.销毁授权页

A.授权页面自动销毁 1.在授权登录页面,当用户主动点击左左上角返回按钮时,返回码为1011,SDK将自动销毁授权页; 2.安卓 SDK,当用户点击手机的硬件返回键(相当于取消登录),返回码为1011,SDK将自动销毁授权页 3.当用户设置一键登录或者其他自定义控件为自动销毁时,得到回调后,授权页面会自动销毁

B.授权页手动销毁 1.当设置一键登录为手动销毁时,点击授权页一键登录按钮成功获取token不会自动销毁授权页,请务必在回调中处理完自己的逻辑后手动调用销毁授权页方法。 2.当设置自定义控件为手动销毁时,请务必在回调中处理完自己的逻辑后手动调用销毁授权页方法。 ** 方法原型

public void finishAuthActivity(){}

示例代码

OneKeyLoginManager.getInstance().finishAuthActivity();

注意:点击授权页的返回按钮或者自定义控件时,请不要回调或者返回到的界面主线程中做耗时操作,避免堵塞授权页销毁,导致再次调用拉起授权页时返回请求频繁。

5.授权页点击事件监听

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

方法原型

public void setActionListener(ActionListener actionListener) {}

参数描述

参数 类型 说明
actionListener ActionListener 点击事件回调监听,ActionListner是该监听唯一的抽象方法,即void ActionListner(int code, String result,String operator)

示例代码

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

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

字段 类型 含义
type int type=1 ,隐私协议点击事件

type=2 ,checkbox点击事件 type=3 ,一键登录按钮点击事件 | | code | int | type=1 ,隐私协议点击事件,code分为0,1,2,3(协议页序号) type=2 ,checkbox点击事件,code分为0,1(0为未选中,1为选中) type=3 ,一键登录点击事件,code分为0,1(0为协议未勾选时,1为协议勾选时) | | message | String | 点击事件的详细信息 |

6.其他API

(1)设置授权页loading显示隐藏 方法原型

public void setLoadingVisibility(boolean visibility) {}

参数描述

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

示例代码

 OneKeyLoginManager.getInstance().setLoadingVisibility(false);

(2)设置授权页协议复选框是否选中 方法原型

public void setCheckBoxValue(boolean isChecked) {}

参数描述

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

示例代码

 OneKeyLoginManager.getInstance().setCheckBoxValue(false);

7.置换手机号

当一键登录外层code为1000时,您将获取到返回的参数,请将这些参数传递给后端开发人员,并参考服务端文档来实现获取手机号码的步骤。Demo工程已经按照Demo服务器文档配置接口(AuthenticationRequestApi.java)和参数(build.gradle中的APP_KEY、APP_SECRET、CERT_NAME字段)。

三.授权页界面修改

1.设计规范

设计规范 注意:开发者不得通过任何技术手段,将授权页面的隐私栏、品牌露出内容隐藏、覆盖,对于接入SDK并上线的应用,我方和运营商会对授权页面做审查,如果有出现未按要求设计授权页面,我方有权将应用的登录功能下线。**

2.授权页配置

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

方法原型

public void setAuthThemeConfig(TenDINsvUIConfig portraitYanUIConfig, TenDINsvUIConfig landYanUIConfig) {}

参数说明

参数 参数类型 说明
portraitYanUIConfig YunXinUIConfig 竖屏页面样式配置对象,开发者在 YunXinUIConfig.java类中调用对应的方法配置授权页中对应的元素(该参数不能传null,否则展示默认页面)
landYanUIConfig YunXinUIConfig 横屏页面样式主题配置对象,开发者在 YunXinUIConfig.java类中调用对应的方法配置授权页中对应的元素(针对指定屏幕方向的,该参数传null)

示例代码

//自定义运营商授权页界面
OneKeyLoginManager.getInstance().setAuthThemeConfig(ConfigUtils.getCJSConfig(getApplicationContext()), ConfigUtils.getCJSLandscapeUiConfig(getApplicationContext()))

YunXinUIConfig.java配置元素说明

授权页背景配置三选一,支持图片,gif图,视频

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

支持网络路径:"https://xxx" |

设置授权页进出场动画

方法 参数类型 说明
setActivityTranslateAnim string 参数1:进场动画传xml文件名即可

参数2:退场动画传xml文件名即可 |

授权页状态栏

方法 参数类型 说明
setStatusBarColor int 设置状态栏背景颜色
setLightColor boolean 设置状态栏字体颜色是否为白色
setStatusBarHidden boolean 设置状态栏是否隐藏
setVirtualKeyTransparent boolean 设置虚拟键是否透明

授权页导航栏

方法 参数类型 说明
setFullScreen boolean 设置是否全屏显示(true:全屏;false:不全屏)默认不全屏
setNavColor int 设置导航栏背景颜色(默认透明)
setNavText string 设置导航栏标题文字
setNavTextColor int 设置导航栏标题文字颜色
setNavTextSize int(单位sp) 设置导航栏标题文字大小
setNavReturnImgPath Drawable 设置导航栏返回按钮图标
setNavReturnImgHidden boolean 设置导航栏返回按钮是否隐藏(true:隐藏;false:不隐藏)
setNavReturnBtnWidth int(单位dp) 设置导航栏返回按钮宽度(默认25dp)
setNavReturnBtnHeight int(单位dp) 设置导航栏返回按钮高度(默认25dp)
setNavReturnBtnOffsetRightX int(单位dp) 设置导航栏返回按钮距离屏幕右侧X偏移
setNavReturnBtnOffsetX int(单位dp) 设置导航栏返回按钮距离屏幕左侧X偏移
setNavReturnBtnOffsetY int(单位dp) 设置导航栏返回按钮距离屏幕上侧Y偏移
setAuthNavHidden boolean 设置导航栏是否隐藏(true:隐藏;false:不隐藏)
setAuthNavTransparent boolean 设置导航栏是否透明(true:透明;false:不透明)
setNavTextBold boolean 设置导航栏字体是否加粗(true:加粗;false:不加粗)

授权页logo

方法 参数类型 说明
setLogoImgPath Drawable 设置logo图片
setLogoWidth int(单位dp) 设置logo宽度
setLogoHeight int(单位dp) 设置logo高度
setLogoOffsetY int(单位dp) 设置logo相对于标题栏下边缘y偏移
setLogoOffsetBottomY int(单位dp) 设置logo相对于屏幕底部y偏移
setLogoHidden boolean 设置logo是否隐藏(true:隐藏;false:不隐藏)
setLogoOffsetX int(单位dp) 设置logo相对屏幕左侧X偏移

授权页号码栏

方法 参数类型 说明
setNumberColor int 设置号码栏字体颜色
setNumFieldOffsetY int(单位dp) 设置号码栏相对于标题栏下边缘y偏移
setNumFieldOffsetBottomY int(单位dp) 设置号码栏相对于屏幕底部y偏移
setNumFieldWidth int(单位dp) 设置号码栏宽度
setNumFieldHeight int(单位dp) 设置号码栏高度
setNumberSize int(单位sp) 设置号码栏字体大小
setNumFieldOffsetX int(单位dp) 设置号码栏相对屏幕左侧X偏移
setNumberBold boolean 设置号码栏字体是否加粗(true:加粗;false:不加粗)

授权页登录按钮

方法 参数类型 说明
setLogBtnText string 设置登录按钮文字
setLogBtnTextColor int 设置登录按钮文字颜色
setLogBtnImgPath Drawable 设置授权登录按钮图片
setLogBtnOffsetY int(单位dp) 设置登录按钮相对于标题栏下边缘Y偏移
setLogBtnOffsetBottomY int(单位dp) 设置登录按钮相对于屏幕底部Y偏移
setLogBtnTextSize int(单位sp) 设置登录按钮字体大小
setLogBtnHeight int(单位dp) 设置登录按钮高度
setLogBtnWidth int(单位dp) 设置登录按钮宽度
setLogBtnOffsetX int(单位dp) 设置登录按钮相对屏幕左侧X偏移
setLogBtnTextBold boolean 设置登录按钮字体是否加粗(true:加粗;false:不加粗)

授权页隐私栏

方法 参数类型 说明
setAppPrivacyOne string(链接) 设置开发者隐私条款1名称和URL

参数1:名称 参数2:url | | setAppPrivacyTwo | string(链接) | 设置开发者隐私条款2名称和URL 参数1:名称 参数2:url | | setAppPrivacyThree | string(链接) | 设置开发者隐私条款3名称和URL 参数1:名称 参数2:url | | setPrivacySmhHidden | boolean | 设置协议名称是否显示书名号《》,默认显示书名号(true:不显示;false:显示) | | setPrivacyTextSize | int(单位sp) | 设置隐私栏字体大小 | | setAppPrivacyColor | int | 设置隐私条款名称颜色 参数1:基础文字颜色 参数2 : 协议文字颜色 | | setPrivacyOffsetBottomY | int(单位dp) | 设置隐私条款相对于授权页面底部下边缘y偏移 | | setPrivacyOffsetY | int(单位dp) | 设置隐私条款相对于授权页面标题栏下边缘y偏移 | | setPrivacyOffsetX | int(单位dp) | 设置隐私条款相对屏幕左侧X偏移 | | setPrivacyOffsetGravityLeft | boolean | 设置隐私条款控件左对齐(true:左对齐;false:居中) | | setPrivacyState | boolean | 设置隐私条款的CheckBox是否选中(true:选中;false:未选中) | | setUncheckedImgPath | Drawable | 设置隐私条款的CheckBox未选中时图片 | | setCheckedImgPath | Drawable | 设置隐私条款的CheckBox选中时图片 | | setCheckBoxHidden | boolean | 设置隐私条款的CheckBox是否隐藏(true:隐藏;false:不隐藏) | | setCheckBoxWH | int(单位dp) | 设置checkbox的宽高,包含两个参数:1.宽 2.高(默认宽高13dp) | | setcheckBoxOffsetXY(2.3.1.6及之后版本新增方法) | int(单位dp) | 设置checkbox在协议框父控件中的位置,包含两个参数:1.左偏移量 2.上偏移量(不设置默认居中) | | setCheckBoxMargin | int(单位dp) | 设置checkbox热点局域范围,包含四个参数:1.向左扩大 2.向上扩大 3.向右扩大 4.向下扩大(默认各10dp) | | setPrivacyText | String | 设置隐私条款名称外的文字,包含五个参数,参数示例(红色 字体为传入参数): 同意《》和《》、《》、《》并授权获取本机号码 参数1: 同意 参数2:和 参数3:、 参数4:、 参数5:并授权获取本机号码 | | setPrivacyTextBold | boolean | 设置协议栏字体是否加粗(true:加粗;false:不加粗) | | setPrivacyCustomToast | Toast | 未勾选时,自定义点击一键登录的Toast提示 | | setPrivacyCustomToastText | String | 未勾选协议时toast提示文字 | | setPrivacyNameUnderline | boolean | 协议是否显示下划线(true:显示;false:不显示) | | setOperatorPrivacyAtLast | boolean | 运营商协议是否为最后一个显示(true:最后显示;false:不在最后显示) | | setPrivacyGravityHorizontalCenter | boolean | 隐私协议栏父控件内容居中对齐(true:居中;false:居左) |

授权页slogan

方法 参数类型 说明
setSloganTextColor int 设置slogan文字颜色
setSloganTextSize int(单位sp) 设置slogan文字字体大小
setSloganOffsetY int(单位dp) 设置slogan相对于标题栏下边缘y偏移
setSloganHidden boolean 设置slogan是否隐藏(true:隐藏;false:不隐藏)
setSloganOffsetBottomY int(单位dp) 设置slogan相对屏幕底部Y偏移
setSloganOffsetX int(单位dp) 设置slogan相对屏幕左侧X偏移
setSloganTextBold boolean 设置slogan文字字体是否加粗(true:加粗;false:不加粗)

授权页loading

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

授权页相对控件设置(指定在登录按钮和协议栏之间)

方法 参数类型 说明
setRelativeCustomView View 设置自定义布局
boolean 点击布局是否需要销毁授权页:true销毁 false不销毁
int(单位dp) 布局左间距
int(单位dp) 距登录按钮的上边距
int(单位dp) 布局右边距
int(单位dp) 距协议栏的下边距
YunXinCustomInterface 整个view的点击事件,内部的子view点击事件需自行实现

协议页导航栏

方法 参数类型 说明
setPrivacyActivityTranslateAnim String 参数1:进场动画传xml文件名即可

参数2:退场动画传xml文件名即可 | | setPrivacyStatusBarHidden | boolean | 协议页是否隐藏状态栏 | | setPrivacyStatusBarColor | int | 协议页状态栏颜色 | | setPrivacyTitleArray | String[] | 协议页标题名称,不设置默认展示授权页对应的协议名称 | | setPrivacyNavColor | int | 设置协议页导航栏背景颜色 | | setPrivacyNavTextBold | boolean | 设置协议页导航栏标题文字是否加粗(true:加粗;false:不加粗) | | setPrivacyNavTextColor | int | 设置协议页导航栏标题文字颜色 | | setPrivacyNavTextSize | int(单位sp) | 设置协议页导航栏标题文字大小 | | setPrivacyNavReturnImgPath | Drawable | 设置协议页导航栏返回按钮图标 | | setPrivacyNavReturnImgHidden | boolean | 设置协议页导航栏返回按钮是否隐藏(true:隐藏;false:不隐藏) | | setPrivacyNavReturnBtnWidth | int(单位dp) | 设置协议页导航栏返回按钮宽度 | | setPrivacyNavReturnBtnHeight | int(单位dp) | 设置协议页导航栏返回按钮高度 | | setPrivacyNavReturnBtnOffsetRightX | int(单位dp) | 设置协议页导航栏返回按钮距离屏幕右侧X偏移 | | setPrivacyNavReturnBtnOffsetX | int(单位dp) | 设置协议页导航栏返回按钮距离屏幕左侧X偏移 | | setPrivacyNavReturnBtnOffsetY | int(单位dp) | 设置协议页导航栏返回按钮距离屏幕上侧Y偏移 |

授权页遮盖层

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

隐私协议提示弹框

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

注意: a.控件X偏移如果不设置默认居中。

3.添加自定义控件

调用该方法可实现在授权页添加自定义控件。

方法原型

public YunXinUIConfig.Builder addCustomView(View view, boolean isFinish, boolean type, TenDINsvCustomInterface tenDINsvCustomInterface) {}

参数说明

参数 参数类型 说明
view(必填) View 自定义控件对象
isFinish(必填) boolean 是否需要销毁授权页:true销毁 false不销毁
type(必填) boolean 设置自定义控件的位置:

true为授权页导航栏 false为授权页导航栏以下空白处 | | yunXinCustomInterface | YunXinCustomInterface | 自定义控件监听 |

注意:如果添加布局为自定义控件,监听实现请参考demo示例。

4.设置弹窗样式

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

方法原型

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

参数说明

参数 参数类型 说明
isdialogTheme(必填) boolean 是否用弹窗样式:true 弹窗样式 false 非弹窗样式
dialogWidth(必填) int(单位dp) 授权页弹窗宽度
dialogHeight(必填) int(单位dp) 授权页弹窗高度
dialogX int(单位dp) 授权页弹窗X偏移量(以屏幕中心为原点)
dialogY int(单位dp) 授权页弹窗Y偏移量(以屏幕中心为原点)
isDialogBottom boolean 授权页弹窗是否贴于屏幕底部:

true:显示到屏幕底部,dialogY参数设置将无效 false:不显示到屏幕底部,以dialogY参数为准 |

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

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

        <activity
            android:name="com.netease.yunxin.login.view.YunXinOneKeyActivity"
            android:launchMode="singleTop"
            android:theme="@style/Theme.ActivityDialogStyle"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:screenOrientation="behind" />

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相关主题。

5.设置横竖屏

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

注意:只有全屏不透明的activity才能指定方向,否则在8.0系统版本上会报“Only fullscreen opaque activities can request orientation”或其他异常。 即:弹框或者透明主题,授权页不能指定方向。如需指定方向,可以指定授权页前个页面的方向,授权页设置跟随前个界面方向,即:“android:screenOrientation="behind"”**

四.本机认证

注:本机认证同免密登录,需要初始化,本机认证、免密登录可共用初始化,两个功能同时使用时,只需调用一次初始化即可。 **

1.初始化

同SDK使用说明-->初始化 **

2.本机号校验

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

方法原型:

public void startAuthentication(AuthenticationExecuteListener authenticationExecuteListener) {}

参数描述:

参数 类型 说明
authenticationExecuteListener(必填) AuthenticationExecuteListener 本机号校验回调监听器,需要调用者自己实现;authenticationRespond是该接口中唯一的抽象方法,即void authenticationRespond(int code,String result)

示例代码:

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

authenticationRespond(int code,String result)方法返回参数分为外层code和result,含义如下:

字段 类型 含义
code int code为2000:成功

其他:失败 | | result | String | 返回信息 |

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

{
    "token":""
}

含义如下:

字段 类型 含义
token String 用来和后台校验手机号。一次有效。

**

3.校验手机号

当本机号校验外层code为2000时,您将获取到返回的参数,请将这些参数传递给后端开发人员,并参考服务端文档来实现校验本机号的步骤

五.返回码

返回码 返回码描述
1000 一键登录获取token成功
1001 运营商通道关闭
1002 运营商信息获取失败,请结合result查看具体失败原因
1003 一键登录获取token失败,请结合result查看具体失败原因
1007 网络请求失败,请结合result查看具体失败原因
1011 点击返回,用户取消免密登录
1014 SDK内部异常,请结合result查看具体失败原因
1016 APPID为空
1019 其他错误,请结合result查看具体失败原因
1022 初始化、预取号成功
1023 初始化、预取号失败,请结合result查看具体失败原因
1031 请求过于频繁(一般是由授权页未销毁情况下,再次调用拉起授权页方法导致)
1032 用户禁用
2000 本机号校验返回成功,解析result,可得到网络请求参数
2003 本机号校验返回失败
×

反馈成功

非常感谢您的反馈,我们会继续努力做得更好。