package com.fuban.user.ui
|
|
import android.graphics.Color
|
import android.os.Bundle
|
import android.os.Environment
|
import android.util.Log
|
import android.view.View
|
import cn.sinata.xldutils.R
|
import cn.sinata.xldutils.activity.TitleActivity
|
import cn.sinata.xldutils.utils.SPUtils
|
import cn.sinata.xldutils.utils.myToast
|
import cn.sinata.xldutils.utils.optInt
|
import cn.sinata.xldutils.utils.optString
|
import cn.sinata.xldutils.view.TitleBar
|
import com.github.zackratos.ultimatebar.UltimateBar
|
import com.fuban.user.network.HttpManager
|
import com.fuban.user.network.request
|
import com.fuban.user.ui.login.BindPhoneActivity
|
import com.fuban.user.ui.login.LoginActivity
|
import com.fuban.user.utils.Const
|
import com.umeng.umverify.UMResultCode
|
import com.umeng.umverify.UMVerifyHelper
|
import com.umeng.umverify.listener.UMTokenResultListener
|
import com.umeng.umverify.model.UMTokenRet
|
import com.umeng.umverify.view.UMAbstractPnsViewDelegate
|
import com.umeng.umverify.view.UMAuthRegisterXmlConfig
|
import com.umeng.umverify.view.UMAuthUIConfig
|
import org.jetbrains.anko.backgroundColorResource
|
import org.jetbrains.anko.find
|
import org.jetbrains.anko.startActivity
|
import java.io.File
|
|
abstract class TransparentStatusBarActivity :
|
TitleActivity() {
|
private var mTokenResultListener: UMTokenResultListener? = null
|
private var mPhoneNumberAuthHelper: UMVerifyHelper? = null
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
super.onCreate(savedInstanceState)
|
setContentView(setContentView())
|
titleBar.setTitleColor(R.color.textColor)
|
titleBar.backgroundColorResource = R.color.transparent
|
titleBar.leftView.setCompoundDrawablesWithIntrinsicBounds(R.mipmap.back,0,0,0)
|
UltimateBar.with(this)
|
.statusDark(true)
|
.create().immersionBar() //沉浸状态栏
|
initView()
|
initClick()
|
}
|
|
abstract fun setContentView():Int
|
abstract fun initClick()
|
abstract fun initView()
|
|
/**
|
* @param isLogin 是否需要跳转登录
|
*/
|
fun checkLogin(isLogin:Boolean = true):Boolean{
|
return if (SPUtils.instance().getInt(Const.User.USER_ID) == -1){
|
if (isLogin)
|
gotoLogin()
|
false
|
} else true
|
}
|
/**
|
* 微信登录是否有手机号,没有就跳绑定页面
|
*/
|
fun checkPhone():Boolean{
|
return if (SPUtils.instance().getBoolean(Const.User.NO_PHONE)){
|
startActivity<BindPhoneActivity>()
|
false
|
} else true
|
}
|
protected fun getPath(): String {
|
val path = Environment.getExternalStorageDirectory().toString() + "/Luban/image/"
|
val file = File(path)
|
return if (file.mkdirs()) {
|
path
|
} else path
|
}
|
|
private fun sdkInit() {
|
mTokenResultListener = object : UMTokenResultListener {
|
override fun onTokenSuccess(s: String) {
|
dismissDialog()
|
var tokenRet: UMTokenRet? = null
|
try {
|
tokenRet = UMTokenRet.fromJson(s)
|
if (UMResultCode.CODE_START_AUTHPAGE_SUCCESS == tokenRet.code) {
|
Log.e(Const.Tag, "唤起授权页成功:$s")
|
}
|
if (UMResultCode.CODE_GET_TOKEN_SUCCESS == tokenRet.code) {
|
Log.e(Const.Tag, "获取token成功:$s")
|
getResultWithToken(tokenRet.token)
|
// mUIConfig.release()
|
}
|
} catch (e: Exception) {
|
e.printStackTrace()
|
}
|
}
|
|
override fun onTokenFailed(s: String) {
|
Log.e(Const.Tag, "获取token失败:$s")
|
dismissDialog()
|
var tokenRet: UMTokenRet? = null
|
mPhoneNumberAuthHelper?.quitLoginPage()
|
try {
|
tokenRet = UMTokenRet.fromJson(s)
|
if (UMResultCode.CODE_ERROR_USER_CANCEL == tokenRet?.getCode()) {
|
myToast("取消登录")
|
} else {
|
startActivity<LoginActivity>()
|
}
|
} catch (e: Exception) {
|
e.printStackTrace()
|
}
|
// mUIConfig.release()
|
}
|
}
|
mPhoneNumberAuthHelper = UMVerifyHelper.getInstance(this, mTokenResultListener)
|
mPhoneNumberAuthHelper?.removeAuthRegisterXmlConfig()
|
mPhoneNumberAuthHelper?.removeAuthRegisterViewConfig()
|
mPhoneNumberAuthHelper?.setAuthSDKInfo(Const.LOGIN_KEY)
|
val builder = object : UMAuthRegisterXmlConfig.Builder(){}
|
builder.setLayout(com.fuban.user.R.layout.activity_one_key_login,object :UMAbstractPnsViewDelegate(){
|
override fun onViewCreated(v: View) {
|
v.find<TitleBar>(R.id.titleBar).apply {
|
titleView.text = "登录"
|
leftClick {
|
myToast("取消登录")
|
mPhoneNumberAuthHelper?.quitLoginPage()
|
}
|
}
|
}
|
})
|
mPhoneNumberAuthHelper?.addAuthRegisterXmlConfig(builder.build())
|
mPhoneNumberAuthHelper?.setAuthUIConfig(
|
UMAuthUIConfig.Builder()
|
.setNavHidden(true)
|
.setLogoHidden(true)
|
.setPrivacyState(false)
|
.setLightColor(true)
|
.setStatusBarColor(Color.TRANSPARENT)
|
.setStatusBarUIFlag(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)
|
.setWebNavTextSize(20)
|
.setNumberSize(20)
|
.setNumberColor(Color.BLACK)
|
.setAuthPageActIn("in_activity", "out_activity")
|
.setAuthPageActOut("in_activity", "out_activity")
|
.setVendorPrivacyPrefix("《")
|
.setVendorPrivacySuffix("》")
|
.setPageBackgroundPath("page_background_color")
|
.setLogoImgPath("mytel_app_launcher")
|
.setLogBtnBackgroundPath("bg_dark_4dp")
|
.create()
|
)
|
}
|
|
override fun gotoLogin(){
|
sdkInit()
|
oneKeyLogin()
|
}
|
|
private fun oneKeyLogin() {
|
mPhoneNumberAuthHelper =
|
UMVerifyHelper.getInstance(applicationContext, mTokenResultListener)
|
// mUIConfig.configAuthPage()
|
getLoginToken(5000)
|
}
|
|
fun getResultWithToken(token: String?) {
|
HttpManager.oneClickLogin(token?:"").request(this,false, {_,data->
|
data?.let {
|
SPUtils.instance().put(Const.User.APP_ID,it.optString("appid"))
|
.put(Const.User.TOKEN,it.optString("token"))
|
.put(Const.User.USER_ID,it.optInt("id"))
|
.apply()
|
mPhoneNumberAuthHelper!!.quitLoginPage()
|
if (this is MainActivity){
|
refreshInfo()
|
}
|
}
|
}){_,_->
|
mPhoneNumberAuthHelper!!.hideLoginLoading()
|
myToast("登录失败,请选择其他登录方式")
|
}
|
}
|
|
|
/**
|
* 拉起授权页
|
* @param timeout 超时时间
|
*/
|
fun getLoginToken(timeout: Int) {
|
mPhoneNumberAuthHelper!!.getLoginToken(this, timeout)
|
showDialog("正在唤起授权页")
|
}
|
}
|