一键登录

This commit is contained in:
lijia 2024-03-14 10:53:31 +08:00
parent d557f6d4c7
commit f1b89e85af
18 changed files with 591 additions and 13 deletions

View File

@ -5,7 +5,7 @@
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
<option name="gradleJvm" value="#JAVA_HOME" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />

View File

@ -77,7 +77,7 @@
</map>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">

4
README.md Normal file
View File

@ -0,0 +1,4 @@
# 友盟+一键登录
友盟+上的appkey用来唤醒与阿里云购买appkey同样可以唤醒前端sdk?)不同(后台需配置友盟+上的appkey来获取token
# 无法获取sha1失败
可通过gradle-app-android-signingReport获取

View File

@ -147,4 +147,13 @@ dependencies {
//
implementation files('libs/EsignSDK.aar')
// implementation(name: 'EsignSDK', ext: 'aar')
//
implementation 'com.umeng.umsdk:common:9.6.3'//
implementation 'com.umeng.umsdk:asms:1.8.0'//
implementation 'com.umeng.umsdk:uverify:2.5.9'//
implementation 'com.umeng.umsdk:uverify-main:2.1.4'//
implementation 'com.umeng.umsdk:uverify-logger:2.1.4'//
implementation 'com.umeng.umsdk:uverify-crashshield:2.1.4'//
}

View File

@ -10,6 +10,7 @@
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--允许程序获取网络状态-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--允许程序访问WiFi网络信息-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--允许程序访问CellID或WiFi热点来获取粗略的位置-->
@ -63,7 +64,8 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.GLDriver"
tools:targetApi="31">
tools:targetApi="31"
android:usesCleartextTraffic="true">
<meta-data
android:name="CHANNEL"

View File

@ -2,6 +2,7 @@ package com.dahe.gldriver.base
import android.app.Application
import android.content.Context
import android.util.Log
import com.dahe.gldriver.BuildConfig
import com.dahe.gldriver.net.Api
import com.dahe.gldriver.oss.OssServiceUtil
@ -9,6 +10,9 @@ import com.dahe.mylibrary.CommonBaseLibrary
import com.esign.esignsdk.EsignSdk
import com.github.gzuliyujiang.dialog.DialogConfig
import com.github.gzuliyujiang.dialog.DialogStyle
import com.umeng.commonsdk.UMConfigure
import com.umeng.umverify.UMVerifyHelper
import com.umeng.umverify.listener.UMTokenResultListener
import java.security.SecureRandom
import java.security.cert.X509Certificate
import javax.net.ssl.HttpsURLConnection
@ -34,8 +38,9 @@ class App : Application() {
OssServiceUtil.getInstance().init();
//E签宝
EsignSdk.getInstance().init(AppConfig.E_KEY, AppConfig.E_LICENSE)
initUmeng()
// PendingIntent pendingIntent =
// PendingIntent.getActivity(this, 0, new Intent(this, HomeActivity.class), PendingIntent.FLAG_UPDATE_CURRENT);
@ -87,6 +92,24 @@ class App : Application() {
}
}
private fun initUmeng(){
//友盟
UMConfigure.preInit(this,"65f10b873ace4f7d7198fa75","Umeng");
UMConfigure.init(this,"65f10b873ace4f7d7198fa75","Umeng",UMConfigure.DEVICE_TYPE_PHONE,"")
val authHelper = UMVerifyHelper.getInstance(this, object : UMTokenResultListener {
override fun onTokenSuccess(ret: String) {
Log.e("Umenginit", "onTokenSuccess: $ret")
}
override fun onTokenFailed(ret: String) {
Log.e("Umenginit", "onTokenFailed: $ret")
}
})
authHelper.setLoggerEnable(true)
authHelper.setAuthSDKInfo("iiBVGHSKbUML/NTbj187eM1N1KMvRzh1sJbM+2FMbV7FNOnmngDlPr2reqlvouhK/8dXcaNGJuI9B+Kv7C6IlBMoGE0PMVWvwY754T8zxSgSfLUM6s7e0dVxmtMFRrCDawKBiv6g/5+X1mSK5OXNG+H//8rtDDf0vePyUUPCAU26tIX/7BCJ4wvUjobAHBDtSbMMhzqWR5MC7jTCnR0k1OwwvEYxIH6jZuRqT4QgBBO4AMKvFjboqj3rsrr5uE6Gn28fWQrBBrOkPS830GnZFU8ND/0LedGgTlMllBAXLy0gbZZ/8LKJOQ==")
}
companion object {
var app: App? = null
}

View File

@ -0,0 +1,16 @@
package com.dahe.gldriver.event
/**
* @ClassName OrderStauEvent
* @Author john
* @Date 2024/3/5 15:51
* @Description statu: 1 刷新
*/
class RefreshEvent constructor(statu: Int) {
var statu: Int = 0
init {
this.statu = statu
}
}

View File

@ -64,6 +64,16 @@ interface Api {
@GET(BASE_URL + "auth/driver/code")
fun getCode(@Query("contactPhone") contactPhone: String): Observable<CommonResponseBean<UserBean>>
/**
* 司机一键登录
* @param token String
* @return Observable<CommonResponseBean<UserBean>>
*/
@GET(BASE_URL+"auth/driver/oneClickLogin")
fun oneClickLogin(@Query("token") token : String) :Observable<CommonResponseBean<UserBean>>
/**
* 上传到oss
* */

View File

@ -0,0 +1,18 @@
package com.dahe.gldriver.temp
interface AuthPageConfig {
/**
* 配置授权页样式
*/
fun configAuthPage()
/**
* android8.0兼容
*/
fun onResume()
/**
* 释放sdk内部引用防止内存泄漏
*/
fun release()
}

View File

@ -0,0 +1,96 @@
package com.dahe.gldriver.temp
import android.app.Activity
import android.content.Context
import android.graphics.Color
import android.util.TypedValue
import android.view.View
import android.widget.RelativeLayout
import android.widget.TextView
import com.dahe.gldriver.temp.Constant.UI_TYPE
import com.nirvana.tools.core.AppUtils
import com.umeng.umverify.UMVerifyHelper
abstract class BaseUIConfig(@JvmField var mActivity: Activity, @JvmField var mAuthHelper: UMVerifyHelper) :
AuthPageConfig {
@JvmField
var mContext: Context
var mScreenWidthDp = 0
var mScreenHeightDp = 0
init {
mContext = mActivity.applicationContext
}
protected fun initSwitchView(marginTop: Int): View {
val switchTV = TextView(mContext)
val mLayoutParams = RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
AppUtils.dp2px(mContext, 50f)
)
//一键登录按钮默认marginTop 270dp
mLayoutParams.setMargins(0, AppUtils.dp2px(mContext, marginTop.toFloat()), 0, 0)
mLayoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE)
switchTV.text = "切换短信验证码登录"
switchTV.setTextColor(Color.BLACK)
switchTV.setTextSize(TypedValue.COMPLEX_UNIT_SP, 13.0f)
switchTV.layoutParams = mLayoutParams
return switchTV
}
// protected void updateScreenSize(int authPageScreenOrientation) {
// int screenHeightDp = AppUtils.px2dp(mContext, AppUtils.getPhoneHeightPixels(mContext));
// int screenWidthDp = AppUtils.px2dp(mContext, AppUtils.getPhoneWidthPixels(mContext));
// int rotation = mActivity.getWindowManager().getDefaultDisplay().getRotation();
// if (authPageScreenOrientation == ActivityInfo.SCREEN_ORIENTATION_BEHIND) {
// authPageScreenOrientation = mActivity.getRequestedOrientation();
// }
// if (authPageScreenOrientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
// || authPageScreenOrientation == ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE
// || authPageScreenOrientation == ActivityInfo.SCREEN_ORIENTATION_USER_LANDSCAPE) {
// rotation = Surface.ROTATION_90;
// } else if (authPageScreenOrientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
// || authPageScreenOrientation == ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT
// || authPageScreenOrientation == ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT) {
// rotation = Surface.ROTATION_180;
// }
// switch (rotation) {
// case Surface.ROTATION_0:
// case Surface.ROTATION_180:
// mScreenWidthDp = screenWidthDp;
// mScreenHeightDp = screenHeightDp;
// break;
// case Surface.ROTATION_90:
// case Surface.ROTATION_270:
// mScreenWidthDp = screenHeightDp;
// mScreenHeightDp = screenWidthDp;
// break;
// default:
// break;
// }
// }
/**
* 在横屏APP弹竖屏一键登录页面或者竖屏APP弹横屏授权页时处理特殊逻辑
* Android8.0只能启动SCREEN_ORIENTATION_BEHIND模式的Activity
*/
override fun onResume() {}
override fun release() {
mAuthHelper.releasePreLoginResultListener()
mAuthHelper.setAuthListener(null)
mAuthHelper.setUIClickListener(null)
mAuthHelper.removeAuthRegisterViewConfig()
mAuthHelper.removeAuthRegisterXmlConfig()
}
companion object {
fun init(
type: UI_TYPE?,
activity: Activity?,
authHelper: UMVerifyHelper?
): AuthPageConfig? {
return when (type) {
UI_TYPE.FULL_PORT -> FullPortConfig(activity, authHelper)
else -> null
}
}
}
}

View File

@ -0,0 +1,84 @@
package com.dahe.gldriver.temp
object Constant {
val TYPES = arrayOf(
"全屏(竖屏)",
"全屏(横屏)",
"弹窗(竖屏)",
"弹窗(横屏)",
"底部弹窗",
"自定义View",
"自定义ViewXml",
"自定义Gif背景",
"自定义视频背景(mov,mp4)",
"自定义图片背景",
"全屏(竖屏弹窗)",
"全屏(横屏弹窗)"
)
const val THEME_KEY = "theme"
const val LOGIN_TYPE = "login_type"
const val LOGIN = 1
const val LOGIN_DELAY = 2
enum class UI_TYPE {
/**
* 全屏竖屏
*/
FULL_PORT,
/**
* 全屏横屏
*/
FULL_LAND,
/**
* 弹窗竖屏
*/
DIALOG_PORT,
/**
* "弹窗(横屏)
*/
DIALOG_LAND,
/**
* 底部弹窗
*/
DIALOG_BOTTOM,
/**
* 自定义View
*/
CUSTOM_VIEW,
/**
* 自定义ViewXml
*/
CUSTOM_XML,
/**
* 自定义背景GIF
*/
CUSTOM_GIF,
/**
* 自定义背景视频
*/
CUSTOM_MOV,
/**
* 自定义背景图片
*/
CUSTOM_PIC,
/**
* 全屏竖屏弹窗
*/
FULL_PORT_PRIVACY,
/**
* 全屏横屏弹窗)
*/
FULL_LAND_PRIVACY
}
}

View File

@ -0,0 +1,101 @@
package com.dahe.gldriver.temp
import android.app.Activity
import android.content.pm.ActivityInfo
import android.graphics.Color
import android.os.Build
import android.util.Log
import android.view.View
import android.widget.Toast
import com.dahe.gldriver.R
import com.dahe.gldriver.event.RefreshEvent
import com.umeng.umverify.UMResultCode
import com.umeng.umverify.UMVerifyHelper
import com.umeng.umverify.view.UMAuthRegisterViewConfig
import com.umeng.umverify.view.UMAuthUIConfig
import org.greenrobot.eventbus.EventBus
import org.json.JSONException
import org.json.JSONObject
class FullPortConfig(activity: Activity?, authHelper: UMVerifyHelper?) :
BaseUIConfig(activity!!, authHelper!!) {
private val TAG = "全屏竖屏样式"
override fun configAuthPage() {
mAuthHelper.setUIClickListener { code, context, jsonString ->
try {
val jsonObj = JSONObject(jsonString)
when (code) {
UMResultCode.CODE_ERROR_USER_CANCEL -> {
Log.e(TAG, "点击了授权页默认返回按钮")
mAuthHelper.quitLoginPage()
mActivity.finish()
}
UMResultCode.CODE_ERROR_USER_SWITCH -> Log.e(
TAG,
"点击了授权页默认切换其他登录方式"
)
UMResultCode.CODE_ERROR_USER_LOGIN_BTN -> if (!jsonObj.getBoolean("isChecked")) {
Toast.makeText(mContext, "同意服务条款才可以登录", Toast.LENGTH_SHORT)
.show()
}
UMResultCode.CODE_ERROR_USER_CHECKBOX -> Log.e(
TAG,
"checkbox状态变为" + jsonObj.getBoolean("isChecked")
)
UMResultCode.CODE_ERROR_USER_PROTOCOL_CONTROL -> Log.e(
TAG,
"点击协议," + "name: " + jsonObj.getString("name") + ", url: " + jsonObj.getString(
"url"
)
)
else -> {}
}
} catch (e: JSONException) {
}
}
mAuthHelper.removeAuthRegisterXmlConfig()
mAuthHelper.removeAuthRegisterViewConfig()
// //添加自定义切换其他登录方式
mAuthHelper.addAuthRegistViewConfig("switch_msg", UMAuthRegisterViewConfig.Builder()
.setView(initSwitchView(350))
.setRootViewId(UMAuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_BODY)
.setCustomInterface { // Toast.makeText(mContext, "切换到短信登录方式", Toast.LENGTH_SHORT).show();
EventBus.getDefault().post(RefreshEvent(1))
mAuthHelper.quitLoginPage()
}.build()
)
var authPageOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT
if (Build.VERSION.SDK_INT == 26) {
authPageOrientation = ActivityInfo.SCREEN_ORIENTATION_BEHIND
}
val builder = UMAuthUIConfig.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)
.setNavHidden(true)
.setLogBtnBackgroundDrawable(mContext.getDrawable(R.drawable.bg_btn)) //沉浸式状态栏
.setStatusBarColor(Color.TRANSPARENT)
.setStatusBarUIFlag(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)
.setLightColor(true)
.setWebNavTextSizeDp(20) //图片或者xml的传参方式为不包含后缀名的全称 需要文件需要放在drawable或drawable-xxx目录下 in_activity.xml, mytel_app_launcher.png
.setAuthPageActIn("in_activity", "out_activity")
.setAuthPageActOut("in_activity", "out_activity")
.setVendorPrivacyPrefix("")
.setVendorPrivacySuffix("")
.setPageBackgroundPath("page_background_color") // .setLogoImgPath("mytel_app_launcher")
//一键登录按钮三种状态背景示例login_btn_bg.xml
.setLogBtnBackgroundPath("login_btn_bg")
.setScreenOrientation(authPageOrientation)
val res = mContext.resources
val logoDrawable = res.getDrawable(R.drawable.diver_logo)
builder.setLogoImgDrawable(logoDrawable)
mAuthHelper.setAuthUIConfig(builder.create())
}
}

View File

@ -28,8 +28,12 @@ class CodeLoginActivity : BaseActivity<ActivityCodeBinding>(), View.OnClickListe
lateinit var phone: String
override fun initView(savedInstanceState: Bundle?) {
phone = intent.extras!!.getString(AppConfig.PHONE, "")
binding.tvLoginType.setOnClickListener(this)
binding.ok.setOnClickListener(this)
binding.run {
tvLoginType.setOnClickListener(this@CodeLoginActivity)
ok.setOnClickListener(this@CodeLoginActivity)
ivBack.setOnClickListener(this@CodeLoginActivity)
tvPhone.text = """验证码已发送至${phone}"""
}
}
override fun initDate() {
@ -47,14 +51,21 @@ class CodeLoginActivity : BaseActivity<ActivityCodeBinding>(), View.OnClickListe
override fun onClick(view: View?) {
super.onClick(view)
when (view?.id) {
binding.tvLoginType.id -> {}
binding.tvLoginType.id -> {
initDate()
}
binding.ivBack.id -> {
finish()
}
binding.ok.id -> {
// setResult(RESULT_OK, Intent().apply { putExtra(AppConfig.CODE, "2024") })
// finish()
DataManager.getInstance().login(phone, "2024")
.flatMap {
//两个接口token字段名称不一致先进行保存
SPUtils.instance.setUserToken(mContext,it.data.access_token)
SPUtils.instance.setUserToken(mContext, it.data.access_token)
DataManager.getInstance().getUserInfo()
}
.subscribeOn(Schedulers.io())
@ -67,7 +78,7 @@ class CodeLoginActivity : BaseActivity<ActivityCodeBinding>(), View.OnClickListe
mContext,
HomeActivity::class.java
)
ActivityUtils.finishToActivity(LoginActivity::class.java,true)
ActivityUtils.finishToActivity(LoginActivity::class.java, true)
}
}))

View File

@ -2,15 +2,36 @@ package com.dahe.gldriver.ui.account
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.Toast
import com.dahe.gldriver.base.AppConfig
import com.dahe.gldriver.databinding.ActivityLoginBinding
import com.dahe.gldriver.event.OrderStauEvent
import com.dahe.gldriver.event.RefreshEvent
import com.dahe.gldriver.net.BaseObserver
import com.dahe.gldriver.net.DataManager
import com.dahe.gldriver.net.RxHttpCallBack
import com.dahe.gldriver.temp.AuthPageConfig
import com.dahe.gldriver.temp.FullPortConfig
import com.dahe.gldriver.ui.HomeActivity
import com.dahe.gldriver.ui.account.authperson.AuthDrivingActivity
import com.dahe.gldriver.ui.account.authperson.AuthTrailerActivity
import com.dahe.gldriver.utils.OneKeyLoginUtils
import com.dahe.glex.bean.UserBean
import com.dahe.mylibrary.base.BaseActivity
import com.dahe.mylibrary.net.CommonResponseBean
import com.dahe.mylibrary.utils.ActivityUtils
import com.dahe.mylibrary.utils.ToastUtils
import com.umeng.commonsdk.utils.UMUtils
import com.umeng.umverify.UMResultCode
import com.umeng.umverify.UMVerifyHelper
import com.umeng.umverify.listener.UMTokenResultListener
import com.umeng.umverify.model.UMTokenRet
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.json.JSONException
import org.json.JSONObject
/**
* @ClassName LoginActivity
@ -53,6 +74,7 @@ class LoginActivity : BaseActivity<ActivityLoginBinding>(), View.OnClickListener
}
}
override fun initDate() {
}
@ -69,6 +91,23 @@ class LoginActivity : BaseActivity<ActivityLoginBinding>(), View.OnClickListener
}
}
@Subscribe
fun eventStatu(event: RefreshEvent) {
if (event.statu == 1) {
changeLoginType()
}
}
override fun onStart() {
super.onStart()
EventBus.getDefault().register(this);
}
override fun onStop() {
super.onStop()
EventBus.getDefault().unregister(this);
}
private fun changeLoginType() {
if ("手机号登录/注册" == binding.tvLoginType.text) {
binding.tvLoginType.text = "本机号码一键登录"
@ -97,7 +136,8 @@ class LoginActivity : BaseActivity<ActivityLoginBinding>(), View.OnClickListener
}
} else {
ActivityUtils.startActivity(mContext, SelectRoleActivity::class.java)
OneKeyLoginUtils.getInstance().oneLogin(mContext,this)
// ActivityUtils.startActivity(mContext, SelectRoleActivity::class.java)
}
}

View File

@ -0,0 +1,163 @@
package com.dahe.gldriver.utils
import android.content.Context
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.dahe.gldriver.net.BaseObserver
import com.dahe.gldriver.net.DataManager
import com.dahe.gldriver.net.RxHttpCallBack
import com.dahe.gldriver.temp.AuthPageConfig
import com.dahe.gldriver.temp.FullPortConfig
import com.dahe.gldriver.ui.HomeActivity
import com.dahe.gldriver.ui.account.CodeLoginActivity
import com.dahe.gldriver.ui.account.LoginActivity
import com.dahe.glex.bean.UserBean
import com.dahe.mylibrary.base.SingletonNoPHolder
import com.dahe.mylibrary.net.CommonResponseBean
import com.dahe.mylibrary.utils.ActivityUtils
import com.google.gson.Gson
import com.umeng.umverify.UMResultCode
import com.umeng.umverify.UMVerifyHelper
import com.umeng.umverify.listener.UMTokenResultListener
import com.umeng.umverify.model.UMTokenRet
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
/**
* @ClassName OneKeyLoginUtils
* @Author john
* @Date 2024/3/14 09:49
* @Description TODO
*/
class OneKeyLoginUtils private constructor() {
companion object : SingletonNoPHolder<OneKeyLoginUtils>(::OneKeyLoginUtils)
lateinit var mPhoneNumberAuthHelper: UMVerifyHelper
lateinit var mUIConfig: AuthPageConfig
fun oneLogin(context: Context, activity: AppCompatActivity) {
//一键登录环境判断
mPhoneNumberAuthHelper =
UMVerifyHelper.getInstance(context, object : UMTokenResultListener {
override fun onTokenSuccess(p0: String?) {
mPhoneNumberAuthHelper.setAuthListener(object : UMTokenResultListener {
override fun onTokenSuccess(p0: String?) {
var tokenRet: UMTokenRet? = null
try {
mUIConfig.release()
tokenRet = UMTokenRet.fromJson(p0)
if (UMResultCode.CODE_GET_TOKEN_SUCCESS == tokenRet.code) {
DataManager.getInstance().oneClickLogin(tokenRet.token)
.flatMap {
//两个接口token字段名称不一致先进行保存
SPUtils.instance.setUserToken(context,it.data.access_token)
DataManager.getInstance().getUserInfo()
}
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(BaseObserver(context,
object : RxHttpCallBack<UserBean>() {
override fun onSuccess(t: CommonResponseBean<UserBean>) {
super.onSuccess(t)
mPhoneNumberAuthHelper.quitLoginPage()
SPUtils.instance.setUserInfo(context, Gson().toJson(t.data))
ActivityUtils.startActivity(
context,
HomeActivity::class.java
)
ActivityUtils.finishToActivity(LoginActivity::class.java,true)
}
}))
}
} catch (e: Exception) {
e.printStackTrace();
}
}
override fun onTokenFailed(p0: String?) {
try {
mUIConfig.release()
var tokenRet = UMTokenRet.fromJson(p0)
if (UMResultCode.CODE_ERROR_USER_CANCEL == tokenRet.getCode()) {
//模拟的是必须登录 否则直接退出app的场景
// finish()
} else {
Toast.makeText(
context,
"一键登录失败切换到其他登录方式",
Toast.LENGTH_SHORT
).show()
//获取token失败去获取验证码页面
ActivityUtils.startActivity(
context,
CodeLoginActivity::class.java
)
}
} catch (e: java.lang.Exception) {
e.printStackTrace()
}
}
})
mUIConfig!!.configAuthPage()
mPhoneNumberAuthHelper?.getLoginToken(context, 5000)
}
override fun onTokenFailed(p0: String?) {
try {
var tokenRet = UMTokenRet.fromJson(p0)
if (UMResultCode.CODE_ERROR_USER_CANCEL == tokenRet.getCode()) {
//模拟的是必须登录 否则直接退出app的场景
// finish()
} else {
Toast.makeText(
context,
"一键登录失败切换到其他登录方式",
Toast.LENGTH_SHORT
).show()
//获取token失败去获取验证码页面
ActivityUtils.startActivity(context, CodeLoginActivity::class.java)
}
} catch (e: java.lang.Exception) {
e.printStackTrace()
}
}
}).apply {
checkEnvAvailable(UMVerifyHelper.SERVICE_TYPE_LOGIN)
}
mUIConfig = FullPortConfig(activity, mPhoneNumberAuthHelper)
}
private open class CheckListener(context: Context) : UMTokenResultListener {
var context: Context
init {
this.context = context
}
override fun onTokenSuccess(p0: String?) {
TODO("Not yet implemented")
}
override fun onTokenFailed(p0: String?) {
try {
var tokenRet = UMTokenRet.fromJson(p0)
if (UMResultCode.CODE_ERROR_USER_CANCEL == tokenRet.getCode()) {
//模拟的是必须登录 否则直接退出app的场景
// finish()
} else {
Toast.makeText(
context,
"一键登录失败切换到其他登录方式",
Toast.LENGTH_SHORT
).show()
//获取token失败去获取验证码页面
ActivityUtils.startActivity(context, CodeLoginActivity::class.java)
}
} catch (e: java.lang.Exception) {
e.printStackTrace()
}
}
}
}

View File

@ -4,7 +4,6 @@ import android.content.Context
import android.os.Bundle
import com.dahe.gldriver.base.AppConfig
import com.dahe.gldriver.bean.CarBean
import com.dahe.gldriver.event.OrderStauEvent
import com.dahe.gldriver.net.BaseObserver
import com.dahe.gldriver.net.DataManager
import com.dahe.gldriver.net.RxHttpCallBack

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 KiB

View File

@ -14,6 +14,7 @@
<ImageView
android:id="@+id/ivBack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_12"
@ -32,6 +33,7 @@
android:textSize="@dimen/sp_20"></TextView>
<TextView
android:id="@+id/tvPhone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tvTitle"