Commit d823de6c authored by liusheng's avatar liusheng

1.解决webView界面下面ui黑块问题。2.添加接口返回401跳转登录的逻辑

parent b48a1802
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<!-- 配置可查询包名, 配置测试游戏必须添加 添加 -->
<queries> <queries>
<package android:name="com.tencent.mm" /> <package android:name="com.tencent.mm" />
<package android:name="com.tencent.mobileqq" /> <package android:name="com.tencent.mobileqq" />
......
...@@ -53,6 +53,7 @@ class MainActivity() : XPageActivity(), TencentLocationListener { ...@@ -53,6 +53,7 @@ class MainActivity() : XPageActivity(), TencentLocationListener {
private var mSensorManager: SensorManager? = null private var mSensorManager: SensorManager? = null
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
accelertorViewModel = accelertorViewModel =
ViewModelProvider(this).get(AccelertorViewModel::class.java) ViewModelProvider(this).get(AccelertorViewModel::class.java)
initPhoneUtils() initPhoneUtils()
......
...@@ -206,9 +206,11 @@ class AccelertorFragment : XPageFragment() { ...@@ -206,9 +206,11 @@ class AccelertorFragment : XPageFragment() {
} }
if (!LoginUtils.hasToken()) { if (!LoginUtils.hasToken()) {
LoginUtils.login(this, { context?.let { it1 ->
LoginUtils.login(it1, {
}) })
}
return@setOnClickListener return@setOnClickListener
} }
...@@ -268,11 +270,13 @@ class AccelertorFragment : XPageFragment() { ...@@ -268,11 +270,13 @@ class AccelertorFragment : XPageFragment() {
LoginUtils.token?.let { LoginUtils.token?.let {
openPage(CommonWebViewFragment::class.java, params) openPage(CommonWebViewFragment::class.java, params)
} ?: let { } ?: let {
LoginUtils.login(this, { context?.let { it1 ->
if (true) { LoginUtils.login(it1, {
openPage(CommonWebViewFragment::class.java, params) if (true) {
} openPage(CommonWebViewFragment::class.java, params)
}) }
})
}
} }
} }
......
...@@ -16,7 +16,9 @@ import com.xuexiang.xpage.base.XPageFragment ...@@ -16,7 +16,9 @@ import com.xuexiang.xpage.base.XPageFragment
import com.xuexiang.xutil.app.AppUtils import com.xuexiang.xutil.app.AppUtils
import com.xuexiang.xutil.system.PermissionUtils import com.xuexiang.xutil.system.PermissionUtils
import android.content.Intent import android.content.Intent
import android.media.audiofx.BassBoost
import android.net.Uri import android.net.Uri
import android.provider.Settings
import com.hjq.toast.ToastUtils import com.hjq.toast.ToastUtils
import java.lang.Exception import java.lang.Exception
import android.util.DisplayMetrics import android.util.DisplayMetrics
...@@ -52,10 +54,12 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) ...@@ -52,10 +54,12 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
params.putString(CommonWebViewFragment.WEBVIEW_URL_KEY, HttpConfig.UI_MAIN_URL + url) params.putString(CommonWebViewFragment.WEBVIEW_URL_KEY, HttpConfig.UI_MAIN_URL + url)
xPageFragment.openPage(CommonWebViewFragment::class.java, params) xPageFragment.openPage(CommonWebViewFragment::class.java, params)
} ?: let { } ?: let {
LoginUtils.login(xPageFragment) { xPageFragment.context?.let { it1 ->
LoginUtils.token?.let { LoginUtils.login(it1) {
agentWeb.getJsAccessEntrace() LoginUtils.token?.let {
.quickCallJs("userToken", it) agentWeb.getJsAccessEntrace()
.quickCallJs("userToken", it)
}
} }
} }
} }
...@@ -65,7 +69,7 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) ...@@ -65,7 +69,7 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
//打开系统设置 //打开系统设置
@JavascriptInterface @JavascriptInterface
fun openSysSetting() { fun openSysSetting() {
NetworkUtils.openWirelessSettings() xPageFragment.startActivity( Intent(Settings.ACTION_SETTINGS));
} }
@JavascriptInterface @JavascriptInterface
...@@ -77,12 +81,14 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) ...@@ -77,12 +81,14 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
@JavascriptInterface @JavascriptInterface
fun login(callback: String) { fun login(callback: String) {
LoginUtils.login(xPageFragment, { xPageFragment.context?.let {
if (it) { LoginUtils.login(it, {
agentWeb.getJsAccessEntrace() if (it) {
.quickCallJs(callback, LoginUtils.token) agentWeb.getJsAccessEntrace()
} .quickCallJs(callback, LoginUtils.token)
}) }
})
}
} }
/** /**
......
...@@ -70,6 +70,14 @@ class CommonWebViewFragment : XPageFragment() { ...@@ -70,6 +70,14 @@ class CommonWebViewFragment : XPageFragment() {
} }
override fun onHiddenChanged(hidden: Boolean) {
super.onHiddenChanged(hidden)
}
override fun getUserVisibleHint(): Boolean {
return super.getUserVisibleHint()
}
override fun onPause() { override fun onPause() {
agentWeb?.getWebLifeCycle()?.onPause() agentWeb?.getWebLifeCycle()?.onPause()
super.onPause() super.onPause()
......
package com.ccwangluo.accelerator.utils package com.ccwangluo.accelerator.utils
import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.Intent.FLAG_ACTIVITY_NEW_TASK
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.ccwangluo.accelerator.model.LoginRes import com.ccwangluo.accelerator.model.LoginRes
import com.ccwangluo.accelerator.model.UserProfile import com.ccwangluo.accelerator.model.UserProfile
...@@ -12,6 +14,7 @@ import com.hjq.toast.ToastUtils ...@@ -12,6 +14,7 @@ import com.hjq.toast.ToastUtils
import com.tencent.mmkv.MMKV import com.tencent.mmkv.MMKV
import com.xuexiang.xpage.base.XPageFragment import com.xuexiang.xpage.base.XPageFragment
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import java.util.* import java.util.*
...@@ -99,12 +102,12 @@ object LoginUtils { ...@@ -99,12 +102,12 @@ object LoginUtils {
timer?.cancel() timer?.cancel()
} }
fun login(xPageFragment: XPageFragment, callBack: (Boolean) -> Unit) { fun login(context: Context, callBack: (Boolean) -> Unit) {
PhoneUtils.openLoginAuth(xPageFragment) { b, s -> PhoneUtils.openLoginAuth(context) { b, s ->
if (b) { if (b) {
val map = mutableMapOf<String, String>() val map = mutableMapOf<String, String>()
map.put("token", s) map.put("token", s)
xPageFragment.lifecycleScope.launch(Dispatchers.IO) { GlobalScope.launch(Dispatchers.IO) {
val res = HttpGo.postSync<LoginRes>("/api/user/flash/login", map) val res = HttpGo.postSync<LoginRes>("/api/user/flash/login", map)
res?.let { res?.let {
if (it.code == 200) { if (it.code == 200) {
...@@ -125,11 +128,13 @@ object LoginUtils { ...@@ -125,11 +128,13 @@ object LoginUtils {
} }
} }
} else { } else {
xPageFragment.startActivity( val intent = Intent(
Intent( context,
xPageFragment.context, PhoneLoginActivity::class.java
PhoneLoginActivity::class.java )
) intent.addFlags(FLAG_ACTIVITY_NEW_TASK )
context.startActivity(
intent
) )
} }
} }
......
...@@ -49,9 +49,9 @@ object PhoneUtils { ...@@ -49,9 +49,9 @@ object PhoneUtils {
} }
} }
fun openLoginAuth(xPageFragment: XPageFragment, callback: (Boolean, String) -> Unit) { fun openLoginAuth(context: Context, callback: (Boolean, String) -> Unit) {
xPageFragment.context?.let { context?.let {
OneKeyLoginManager.getInstance().setAuthThemeConfig(getEConfig(it, xPageFragment)) OneKeyLoginManager.getInstance().setAuthThemeConfig(getEConfig(it))
OneKeyLoginManager.getInstance().openLoginAuth(false, OneKeyLoginManager.getInstance().openLoginAuth(false,
{ code, result -> { code, result ->
...@@ -69,7 +69,7 @@ object PhoneUtils { ...@@ -69,7 +69,7 @@ object PhoneUtils {
} }
} }
fun getEConfig(context: Context, xPageFragment: XPageFragment): ShanYanUIConfig? { fun getEConfig(context: Context): ShanYanUIConfig? {
/************************************SDK固有控件 */ /************************************SDK固有控件 */
//登录按钮背景 //登录按钮背景
...@@ -137,8 +137,8 @@ object PhoneUtils { ...@@ -137,8 +137,8 @@ object PhoneUtils {
.setLogBtnImgPath(context.resources.getDrawable(R.mipmap.login_btn_onekey)) .setLogBtnImgPath(context.resources.getDrawable(R.mipmap.login_btn_onekey))
.addCustomView( .addCustomView(
mOtherTv, true, false mOtherTv, true, false
) { context, view -> xPageFragment.startActivity( ) { context, view -> context.startActivity(
Intent(xPageFragment.context, Intent(context,
PhoneLoginActivity::class.java) PhoneLoginActivity::class.java)
) } ) }
.setPrivacyState(false) .setPrivacyState(false)
......
...@@ -6,6 +6,7 @@ import com.github.shadowsocks.http.HttpConfig ...@@ -6,6 +6,7 @@ import com.github.shadowsocks.http.HttpConfig
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.reflect.TypeToken import com.google.gson.reflect.TypeToken
import com.hjq.toast.ToastUtils import com.hjq.toast.ToastUtils
import com.xuexiang.xutil.XUtil
import okhttp3.* import okhttp3.*
import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MediaType.Companion.toMediaTypeOrNull
...@@ -51,14 +52,19 @@ object HttpGo { ...@@ -51,14 +52,19 @@ object HttpGo {
LoginUtils.token?.let { LoginUtils.token?.let {
request.addHeader("Authorization", it) request.addHeader("Authorization", it)
} }
Timber.i("======getSync.token:"+LoginUtils.token)
Timber.i("%s%s", url, request.toString()) Timber.i("%s%s", url, request.toString())
val call = okHttpClient.newCall(request.build()) val call = okHttpClient.newCall(request.build())
val response: Response = call.execute() val response: Response = call.execute()
if (response.isSuccessful) { if (response.isSuccessful) {
val type = object : TypeToken<BaseModel<T>>() {}.type val type = object : TypeToken<BaseModel<T>>() {}.type
val string = response.body?.string() val string = response.body?.string()
Timber.i("%s%s", url, string.toString()) Timber.i("========%s%s", url, string.toString())
return gson.fromJson(string, type) val result : BaseModel<T>? = gson.fromJson(string, type)
return result
} else if (response.code == 401){
LoginUtils.clearToken()
LoginUtils.login(XUtil.getContext(),{})
} else { } else {
ToastUtils.show("网络错误") ToastUtils.show("网络错误")
} }
...@@ -85,14 +91,29 @@ object HttpGo { ...@@ -85,14 +91,29 @@ object HttpGo {
LoginUtils.token?.let { LoginUtils.token?.let {
request.addHeader("Authorization", it) request.addHeader("Authorization", it)
} }
Timber.i("======postSync.token:"+LoginUtils.token)
Timber.i(request.toString()) Timber.i(request.toString())
val call = okHttpClient.newCall(request.build()) val call = okHttpClient.newCall(request.build())
val response: Response = call.execute() val response: Response = call.execute()
if (response.isSuccessful) { if (response.isSuccessful) {
val string = response.body?.string() val string = response.body?.string()
Timber.i(string.toString()) Timber.i("======postSync:"+string.toString())
val type = object : TypeToken<BaseModel<T>>() {}.type val type = object : TypeToken<BaseModel<T>>() {}.type
return gson.fromJson(string, type) val result : BaseModel<T>? = gson.fromJson(string, type)
result?.let {
if(it.code == 401) {
LoginUtils.clearToken()
LoginUtils.login(XUtil.getContext(),{})
}
}
return result
}else if (response.code == 401){
LoginUtils.clearToken()
LoginUtils.login(XUtil.getContext(),{})
} else {
ToastUtils.show("网络错误")
} }
} catch (e: java.lang.Exception) { } catch (e: java.lang.Exception) {
ToastUtils.show("网络错误") ToastUtils.show("网络错误")
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
android:layout_height="match_parent"> android:layout_height="match_parent">
<FrameLayout <FrameLayout
android:layout_marginTop="30dp" android:layout_marginTop="0dp"
android:id="@+id/mine_webview" android:id="@+id/mine_webview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"/> android:layout_height="match_parent"/>
......
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
android:id="@+id/game_news_list" android:id="@+id/game_news_list"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="21dp" android:layout_marginTop="10dp"
android:background="@color/white" android:background="@color/white"
android:orientation="horizontal"> android:orientation="horizontal">
......
...@@ -67,6 +67,7 @@ ...@@ -67,6 +67,7 @@
<RelativeLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_marginTop="40dp"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
......
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="#FFFFFF"
android:orientation="vertical"> android:orientation="vertical">
<FrameLayout <FrameLayout
android:layout_marginTop="30dp" android:layout_marginTop="30dp"
android:id="@+id/common_webview" android:id="@+id/common_webview"
android:layout_marginBottom="50dp"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent" />
......
...@@ -36,6 +36,8 @@ ...@@ -36,6 +36,8 @@
android:id="@+id/nickname" android:id="@+id/nickname"
android:layout_width="70.5dp" android:layout_width="70.5dp"
android:layout_height="20dp" android:layout_height="20dp"
android:singleLine="true"
android:ellipsize="end"
android:textColor="#FF000000" android:textColor="#FF000000"
android:textSize="14sp" /> android:textSize="14sp" />
......
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
<ImageView <ImageView
android:id="@+id/plugin_img" android:id="@+id/plugin_img"
android:layout_width="48dp" android:layout_width="42dp"
android:layout_height="48dp" android:layout_height="42dp"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:background="@mipmap/game_download" /> android:background="@mipmap/game_download" />
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
<item name="colorPrimaryDark">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimary</item>
<item name="colorAccent">@color/black</item> <item name="colorAccent">@color/black</item>
<item name="android:windowTranslucentStatus">true</item> <item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item> <item name="android:windowTranslucentNavigation">false</item>
<!-- <item name="android:background">@mipmap/splash</item>--> <!-- <item name="android:background">@mipmap/splash</item>-->
<item name="android:windowBackground">@mipmap/win_bg</item> <item name="android:windowBackground">@mipmap/win_bg</item>
<item name="android:windowDisablePreview">true</item> <item name="android:windowDisablePreview">true</item>
......
...@@ -3,6 +3,7 @@ package com.github.shadowsocks.http ...@@ -3,6 +3,7 @@ package com.github.shadowsocks.http
object HttpConfig { object HttpConfig {
//app后端 //app后端
//val baseUrl = "http://10.16.1.98:9002"
val baseUrl = "https://test-cc-tt-api.orangenet.org.cn" //测试 val baseUrl = "https://test-cc-tt-api.orangenet.org.cn" //测试
// val baseUrl = "https://cc-tt-front.srccwl.com" //生产 // val baseUrl = "https://cc-tt-front.srccwl.com" //生产
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment