一键登录
This commit is contained in:
parent
d557f6d4c7
commit
f1b89e85af
@ -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$" />
|
||||
|
@ -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
4
README.md
Normal file
@ -0,0 +1,4 @@
|
||||
# 友盟+一键登录
|
||||
友盟+上的appkey(用来唤醒),与阿里云购买appkey(同样可以唤醒前端sdk?)不同(后台需配置友盟+上的appkey,来获取token)
|
||||
# 无法获取sha1失败
|
||||
可通过gradle-app-android-signingReport获取
|
@ -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'// 必选
|
||||
}
|
@ -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"
|
||||
|
@ -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
|
||||
}
|
||||
|
16
app/src/main/java/com/dahe/gldriver/event/RefreshEvent.kt
Normal file
16
app/src/main/java/com/dahe/gldriver/event/RefreshEvent.kt
Normal 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
|
||||
}
|
||||
}
|
@ -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
|
||||
* */
|
||||
|
18
app/src/main/java/com/dahe/gldriver/temp/AuthPageConfig.kt
Normal file
18
app/src/main/java/com/dahe/gldriver/temp/AuthPageConfig.kt
Normal file
@ -0,0 +1,18 @@
|
||||
package com.dahe.gldriver.temp
|
||||
|
||||
interface AuthPageConfig {
|
||||
/**
|
||||
* 配置授权页样式
|
||||
*/
|
||||
fun configAuthPage()
|
||||
|
||||
/**
|
||||
* android8.0兼容
|
||||
*/
|
||||
fun onResume()
|
||||
|
||||
/**
|
||||
* 释放sdk内部引用,防止内存泄漏
|
||||
*/
|
||||
fun release()
|
||||
}
|
96
app/src/main/java/com/dahe/gldriver/temp/BaseUIConfig.kt
Normal file
96
app/src/main/java/com/dahe/gldriver/temp/BaseUIConfig.kt
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
84
app/src/main/java/com/dahe/gldriver/temp/Constant.kt
Normal file
84
app/src/main/java/com/dahe/gldriver/temp/Constant.kt
Normal file
@ -0,0 +1,84 @@
|
||||
package com.dahe.gldriver.temp
|
||||
|
||||
object Constant {
|
||||
val TYPES = arrayOf(
|
||||
"全屏(竖屏)",
|
||||
"全屏(横屏)",
|
||||
"弹窗(竖屏)",
|
||||
"弹窗(横屏)",
|
||||
"底部弹窗",
|
||||
"自定义View",
|
||||
"自定义View(Xml)",
|
||||
"自定义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,
|
||||
|
||||
/**
|
||||
* 自定义View(Xml)
|
||||
*/
|
||||
CUSTOM_XML,
|
||||
|
||||
/**
|
||||
* 自定义背景GIF
|
||||
*/
|
||||
CUSTOM_GIF,
|
||||
|
||||
/**
|
||||
* 自定义背景视频
|
||||
*/
|
||||
CUSTOM_MOV,
|
||||
|
||||
/**
|
||||
* 自定义背景图片
|
||||
*/
|
||||
CUSTOM_PIC,
|
||||
|
||||
/**
|
||||
* 全屏(竖屏弹窗)
|
||||
*/
|
||||
FULL_PORT_PRIVACY,
|
||||
|
||||
/**
|
||||
* 全屏(横屏弹窗)
|
||||
*/
|
||||
FULL_LAND_PRIVACY
|
||||
}
|
||||
}
|
101
app/src/main/java/com/dahe/gldriver/temp/FullPortConfig.kt
Normal file
101
app/src/main/java/com/dahe/gldriver/temp/FullPortConfig.kt
Normal 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())
|
||||
}
|
||||
}
|
@ -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)
|
||||
}
|
||||
}))
|
||||
|
||||
|
@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
|
163
app/src/main/java/com/dahe/gldriver/utils/OneKeyLoginUtils.kt
Normal file
163
app/src/main/java/com/dahe/gldriver/utils/OneKeyLoginUtils.kt
Normal 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()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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
|
||||
|
BIN
app/src/main/res/drawable-xxhdpi/diver_logo.png
Normal file
BIN
app/src/main/res/drawable-xxhdpi/diver_logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 606 KiB |
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user