本文是闪验SDK_Android v2.3.1版本的接入文档,用于指导SDK的使用方法,默认读者已经熟悉 IDE(Eclipse 或者 Android Studio)的基本使用方法,以及具有一定的 Android 编程知识基础。
应用的创建流程及APPID的获取,请查看「账号创建」文档**
**
a.将build里面的applicationId换成对应的测试包名
b.将签名配置改成您的签名配置
c.将AppId换成您在闪验平台创建应用后生成的信息
(1)将开发包拷贝到工程
a.将SDK中libs目录下的aar包拷贝到自己工程的libs目录下,如没有该目录需新建。
b.SDK中jniLibs目录下包含多个so库,请根据项目情况,选择相应的so库。如果您的项目包含某个abi目录,则复制对应的so文件到您的项目,例如,您的项目中只有armeabi-v7a目录,则只复制jniLibs中的armeabi-v7a文件到您的项目;如果您的项目没有abi目录,请自行创建并复制。
jniLibs所在目录结构如下图:
在app文件夹下的build.gradle的dependencies中配置对应版本的aar依赖并添加repositories,详细代码如下:
repositories {
flatDir {
dirs '../app/libs'
}
}
dependencies {api(name: 'aar包名', ext: 'aar')}
(2)配置AndroidManifest.xml文件
在manifest标签内添加必要的权限支持
<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.chuanglan.shanyan_sdk.view.CmccLoginActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:launchMode="singleTop"
android:theme="@style/dialogStyle" />
<activity-alias
android:name="com.cmic.sso.sdk.activity.LoginAuthActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:launchMode="singleTop"
android:targetActivity="com.chuanglan.shanyan_sdk.view.CmccLoginActivity"
android:theme="@style/dialogStyle" />
<activity
android:name="com.chuanglan.shanyan_sdk.view.ShanYanOneKeyActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:launchMode="singleTop"
android:theme="@style/dialogStyle" />
<activity
android:name="com.chuanglan.shanyan_sdk.view.CTCCPrivacyProtocolActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:launchMode="singleTop"
android:screenOrientation="behind"
android:theme="@style/dialogStyle" />
配置Android9.0对http协议的支持两种方式:
方式一:
android:usesCleartextTraffic="true"
示例代码:
<application
android:name=".view.MyApplication"
android:allowBackup="true"
android:icon="@mipmap/shanyan_sdk_icon"
android:label="@string/app_name"
android:roundIcon="@mipmap/shanyan_sdk_icon"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true"
></application>
方式二:
目前只有移动运营商个别接口为http请求,对于全局禁用Http的项目,需要设置Http白名单。以下为运营商http接口域名:cmpassport.com
(3) 混淆规则:
-dontwarn com.cmic.sso.sdk.**
-dontwarn com.sdk.**
-keep class com.cmic.sso.sdk.**{*;}
-keep class com.sdk.** { *;}
-keep class cn.com.chinatelecom.account.api.**{*;}
通过上面的几个步骤,工程就配置完成了,接下来就可以在工程中使用闪验SDK进行开发了。
使用一键登录功能前,必须先进行初始化操作,建议放在Application的onCreate() 方法中。
OneKeyLoginManager.getInstance().init(getApplicationContext(), appId, new InitListener() {
@Override
public void getInitStatus(int code, String result) {
}
});
OneKeyLoginManager.getInstance().getPhoneInfo(new GetPhoneInfoListener() {
@Override
public void getPhoneInfoStatus(int code, String result) {
}
});
OneKeyLoginManager.getInstance().openLoginAuth(false, new OpenLoginAuthListener() {
@Override
public void getOpenLoginAuthStatus(int code, String result) {
}
}, new OneKeyLoginListener() {
@Override
public void getOneKeyLoginStatus(int code, String result) {
}
});
OneKeyLoginManager.getInstance().finishAuthActivity();
**
需要对授权页点击事件监听的用户,可调用此方法监听授权页点击事件,无此需求可以不写。
OneKeyLoginManager.getInstance().setActionListener(new ActionListener() {
@Override
public void ActionListner(int type, int code, String message) {
}
});
(1)设置授权页loading显示隐藏
OneKeyLoginManager.getInstance().setLoadingVisibility(false);
(2)设置授权页协议复选框是否选中
OneKeyLoginManager.getInstance().setCheckBoxValue(false);
当一键登录外层code为1000时,您将获取到返回的参数,请将这些参数传递给后端开发人员,并参考「服务端」文档来实现获取手机号码的步骤。
调用该方法可实现对三网运营商授权页面个性化设计,每次调用拉起授权页方法前必须先调用该方法,否则授权界面会展示异常。(三网界面配置内部实现逻辑不同,请务必使用移动、联通、电信卡分别测试三网界面)
//自定义运营商授权页界面
OneKeyLoginManager.getInstance().setAuthThemeConfig(ConfigUtils.getCJSConfig(getApplicationContext()), ConfigUtils.getCJSLandscapeUiConfig(getApplicationContext()))
ShanYanUIConfig.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) | 设置导航栏返回按钮宽度 |
setNavReturnBtnHeight | int(单位dp) | 设置导航栏返回按钮高度 |
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.高 |
setCheckBoxMargin | int(单位dp) | 设置checkbox的间距,包含四个参数:1.左间距 2.上间距 3.右间距 4.下间距 |
setPrivacyText | String | 设置隐私条款名称外的文字,包含五个参数,参数示例(红色 字体为传入参数): 同意《》和《》、《》、《》并授权闪验获取本机号码 参数1: 同意 参数2:和 参数3:、 参数4:、 参数5:并授权闪验获取本机号码 |
setPrivacyTextBold | boolean | 设置协议栏字体是否加粗(true:加粗;false:不加粗) |
setPrivacyCustomToast | Toast | 未勾选时,自定义点击一键登录的Toast提示 |
setPrivacyCustomToastText | String | 未勾选协议时toast提示文字 |
setPrivacyNameUnderline | boolean | 协议是否显示下划线(true:显示;false:不显示) |
setPrivacyCustomToastText | String | 未勾选协议时toast提示文字 |
setOperatorPrivacyAtLast | 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:不加粗) |
授权页上海璟梦信息科技有限公司slogan
方法 | 参数类型 | 说明 |
---|---|---|
setShanYanSloganTextColor | int | 设置上海璟梦信息科技有限公司slogan文字颜色 |
setShanYanSloganTextSize | int(单位sp) | 设置上海璟梦信息科技有限公司slogan文字字体大小 |
setShanYanSloganOffsetY | int(单位dp) | 设置上海璟梦信息科技有限公司slogan相对于标题栏下边缘y偏移 |
setShanYanSloganHidden | boolean | 设置上海璟梦信息科技有限公司slogan是否隐藏(true:隐藏;false:不隐藏) |
setShanYanSloganOffsetBottomY | int(单位dp) | 设置上海璟梦信息科技有限公司slogan相对屏幕底部Y偏移 |
setShanYanSloganOffsetX | int(单位dp) | 设置上海璟梦信息科技有限公司slogan相对屏幕左侧X偏移 |
setShanYanSloganTextBold | boolean | 设置上海璟梦信息科技有限公司slogan文字字体是否加粗(true:加粗;false:不加粗) |
授权页loading
方法 | 参数类型 | 说明 |
---|---|---|
setLoadingView | View | 设置自定义loading |
授权页相对控件设置(指定在登录按钮和协议栏之间)
方法 | 参数类型 | 说明 |
---|---|---|
setRelativeCustomView | View | 设置自定义布局 |
boolean | 点击布局是否需要销毁授权页:true销毁 false不销毁 | |
int(单位dp) | 布局左间距 | |
int(单位dp) | 距登录按钮的上边距 | |
int(单位dp) | 布局右边距 | |
int(单位dp) | 距协议栏的下边距 | |
ShanYanCustomInterface | 整个view的点击事件,内部的子view点击事件需自行实现 |
协议页导航栏
方法 | 参数类型 | 说明 |
---|---|---|
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偏移如果不设置默认居中。
调用该方法可实现在授权页添加自定义控件。
/**
* 闪验三网运营商授权页配置类
*
* @param context
* @return
*/
public static ShanYanUIConfig getUiConfig(Context context) {
/************************************************自定义控件**************************************************************/
Button close = new Button(context);
close.setBackgroundResource(context.getResources().getIdentifier("close_black", "drawable", context.getPackageName()));
RelativeLayout.LayoutParams mLayoutParamsClose = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
mLayoutParamsClose.setMargins(0, AbScreenUtils.dp2px(context, 15), AbScreenUtils.dp2px(context, 10), 0);
mLayoutParamsClose.width = AbScreenUtils.dp2px(context, 20);
mLayoutParamsClose.height = AbScreenUtils.dp2px(context, 20);
mLayoutParamsClose.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
close.setLayoutParams(mLayoutParamsClose);
//其他方式登录
TextView otherTV = new TextView(context);
otherTV.setText("其他方式登录");
otherTV.setTextColor(0xff3a404c);
otherTV.setTextSize(TypedValue.COMPLEX_UNIT_SP, 13);
RelativeLayout.LayoutParams mLayoutParams1 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
mLayoutParams1.setMargins(0, AbScreenUtils.dp2px(context, 175), 0, 0);
mLayoutParams1.addRule(RelativeLayout.CENTER_HORIZONTAL);
otherTV.setLayoutParams(mLayoutParams1);
View view = new View(context);
view.setBackgroundColor(0xffe8e8e8);
RelativeLayout.LayoutParams mLayoutParams3 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, AbScreenUtils.dp2px(context, 1));
mLayoutParams3.setMargins(0, AbScreenUtils.dp2px(context, 44), 0, 0);
view.setLayoutParams(mLayoutParams3);
TextView tip = new TextView(context);
tip.setText("使用该手机号登录");
tip.setTextColor(0xff1E3179);
tip.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);
RelativeLayout.LayoutParams mLayoutParamsTip = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
mLayoutParamsTip.setMargins(AbScreenUtils.dp2px(context, 15), AbScreenUtils.dp2px(context, 65), 0, 0);
mLayoutParamsTip.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
tip.setLayoutParams(mLayoutParamsTip);
LayoutInflater inflater1 = LayoutInflater.from(context);
RelativeLayout relativeLayout = (RelativeLayout) inflater1.inflate(R.layout.other_login_item_view, null);
RelativeLayout.LayoutParams layoutParamsOther = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutParamsOther.addRule(RelativeLayout.CENTER_HORIZONTAL);
layoutParamsOther.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
relativeLayout.setLayoutParams(layoutParamsOther);
ImageView weixin = relativeLayout.findViewById(R.id.weixin);
ImageView qq = relativeLayout.findViewById(R.id.qq);
ImageView weibo = relativeLayout.findViewById(R.id.weibo);
weixin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "微信登录", Toast.LENGTH_SHORT).show();
}
});
qq.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "qq登录", Toast.LENGTH_SHORT).show();
}
});
weibo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "微博登录", Toast.LENGTH_SHORT).show();
}
});
/****************************************************设置授权页*********************************************************/
Drawable authNavHidden = context.getResources().getDrawable(R.drawable.sysdk_login_bg);
Drawable navReturnImgPath = context.getResources().getDrawable(R.drawable.sy_sdk_left);
Drawable logoImgPath = context.getResources().getDrawable(R.drawable.sy_logo);
Drawable logBtnImgPath = context.getResources().getDrawable(R.drawable.login_btn_bg);
Drawable uncheckedImgPath = context.getResources().getDrawable(R.drawable.umcsdk_uncheck_image);
Drawable checkedImgPath = context.getResources().getDrawable(R.drawable.umcsdk_check_image);
ShanYanUIConfig uiConfig = new ShanYanUIConfig.Builder()
.setDialogTheme(true, 460, 240, 0, 0, false)
//授权页导航栏:
.setNavColor(Color.parseColor("#ffffff")) //设置导航栏颜色
.setNavText("") //设置导航栏标题文字
.setNavTextColor(0xff080808) //设置标题栏文字颜色
.setNavReturnImgPath(navReturnImgPath) //
.setNavReturnImgHidden(false)
.setAuthBGImgPath(authNavHidden)
.setAuthNavHidden(true)
//授权页logo(logo的层级在次底层,仅次于自定义控件)
.setLogoImgPath(logoImgPath) //设置logo图片
.setLogoWidth(108) //设置logo宽度
.setLogoHeight(36) //设置logo高度
.setLogoOffsetY(5) //设置logo相对于标题栏下边缘y偏移
.setLogoOffsetX(15)
.setLogoHidden(false) //是否隐藏logo
//授权页号码栏:
.setNumberColor(0xff333333) //设置手机号码字体颜色
.setNumFieldOffsetY(100) //设置号码栏相对于标题栏下边缘y偏移
.setNumberSize(18)
.setNumFieldWidth(110)
.setNumFieldOffsetX(15)
//授权页登录按钮:
.setLogBtnText("本机号码一键登录") //设置登录按钮文字
.setLogBtnTextColor(0xffffffff) //设置登录按钮文字颜色
.setLogBtnImgPath(logBtnImgPath) //设置登录按钮图片
.setLogBtnOffsetY(93) //设置登录按钮相对于标题栏下边缘y偏移
.setLogBtnTextSize(15)
.setLogBtnWidth(150)
.setLogBtnHeight(45)
//授权页隐私栏:
.setAppPrivacyOne("用户自定义协议条款", "https://www.253.com") //设置开发者隐私条款1名称和URL(名称,url)
.setAppPrivacyTwo("用户服务条款", "https://www.253.com") //设置开发者隐私条款2名称和URL(名称,url)
//.setAppPrivacyColor(0xff666666, 0xff0085d0) // 设置隐私条款名称颜色(基础文字颜色,协议文字颜色)
.setPrivacyOffsetY(156)
.setUncheckedImgPath(uncheckedImgPath)
.setCheckedImgPath(checkedImgPath)
//授权页slogan:
.setSloganTextColor(0xff999999) //设置slogan文字颜色
.setSloganOffsetY(130) //设置slogan相对于标题栏下边缘y偏移
.setSloganTextSize(9)
.setSloganOffsetX(15)
// 添加自定义控件:
//其他方式登录及监听,可以不写
.addCustomView(close, true, false, new ShanYanCustomInterface() {
@Override
public void onClick(Context context, View view) {
Toast.makeText(context, "点击关闭", Toast.LENGTH_SHORT).show();
}
})
//标题栏下划线,可以不写
.addCustomView(view, false, false, null)
.addCustomView(tip, false, false, null)
.addCustomView(relativeLayout, false, false, null)
.build();
return uiConfig;
}
**
targetSdkVersion 26以上:
只有全屏不透明的activity才能指定方向,否则在8.0系统版本上会报“Only fullscreen opaque activities can request orientation”异常。
注意:弹框或者透明主题,授权页不能指定方向;如需指定方向,设置授权页前个页面的方向,授权页设置跟随“android:screenOrientation=“behind””
targetSdkVersion 26及以下:无限制
注:本机认证同免密登录,需要初始化,本机认证、免密登录可共用初始化,两个功能同时使用时,只需调用一次初始化即可。
**
在初始化执行之后调用,本机号校验界面需自行实现,可以在多个需要校验的页面中调用。
OneKeyLoginManager.getInstance().startAuthentication(new AuthenticationExecuteListener() {
@Override
public void authenticationRespond(int code, String result) {
}
});
当本机号校验外层code为2000时,您将获取到返回的参数,请将这些参数传递给后端开发人员,并参考「服务端」文档来实现校验本机号的步骤
该返回码为闪验SDK自身的返回码,请注意1003及1023错误内均含有运营商返回码,具体错误在碰到之后查阅「返回码」
返回码 | 返回码描述 |
---|---|
1000 | 一键登录成功,解析result,可得到网络请求参数 |
1001 | 运营商通道关闭 |
1002 | 运营商信息获取失败 |
1003 | 一键登录获取token失败 |
1007 | 网络请求失败 |
1011 | 点击返回,用户取消免密登录 |
1014 | SDK内部异常 |
1016 | APPID为空 |
1019 | 其他错误 |
1022 | 网络初始化、预取号成功 |
1023 | 预初始化失败 |
1031 | 请求过于频繁 |
1032 | 用户禁用 |
2000 | 本机号校验返回成功,解析result,可得到网络请求参数 |
2003 | 本机号校验返回失败 |