Commit 11d2889f by 范玉宾

Merge branch 'd/4.3.93_muse' into 'd/lancet/4.3.93_muse'

# Conflicts:
#   config.gradle
parents c2c63634 d9768508
......@@ -2,7 +2,6 @@ package com.ydl.component.service.web;
import android.app.Activity;
import android.content.Intent;
import com.alibaba.android.arouter.launcher.ARouter;
import com.ydl.confide.api.IConfideService;
......@@ -12,6 +11,7 @@ import com.ydl.webview.NewH5Activity;
import com.ydl.ydlcommon.modular.ModularServiceManager;
import com.yidianling.common.tools.LogUtil;
import com.yidianling.im.api.service.IImService;
import com.yidianling.muse.activity.ChooseMusicActivity;
/**
* webview 点击事件监听 抽象类
......@@ -466,9 +466,19 @@ public class WVClickAbstractListener implements WebViewClientClickListener {
public void switchSound(int mediaId, long meditationId, int meditationType, int businessType,
String buried, String mediaUrl, String mediaCoverUrl,
String title, String desc, int status) {
if (mContext instanceof NewH5Activity) {
if (mContext instanceof NewH5Activity ) {
((NewH5Activity) mContext).switchSound(mediaId, meditationId, meditationType,
businessType, buried, mediaUrl, mediaCoverUrl, title, desc, status);
}else if (mContext instanceof ChooseMusicActivity){
((ChooseMusicActivity) mContext).switchSound(mediaId, meditationId, meditationType,
businessType, buried, mediaUrl, mediaCoverUrl, title, desc, status);
}
}
@Override
public void reloadUrl(String url) {
if (mContext instanceof NewH5Activity) {
((NewH5Activity) mContext).loadUrl(url);
}
}
}
......@@ -414,6 +414,12 @@ class WebJavascriptHandler : IJavascriptHandler{
}
}
"loadUrl" -> {
jsData.cmd?.params?.let{
wvEnventPro?.reloadUrl(jsData.cmd?.params?.url)
}
}
}
}
}
......@@ -189,5 +189,6 @@ public interface WebViewClientClickListener {
String desc,int status){
}
//页面内跳转url
void reloadUrl(String url);
}
......@@ -8,13 +8,13 @@ ext {
"m-confide" : "0.0.49.74",
"m-consultant" : "0.0.60.25",
"m-fm" : "0.0.30.08",
"m-user" : "0.0.62.20",
"m-home" : "0.0.23.66",
"m-user" : "0.0.62.19",
"m-home" : "0.0.23.67",
"m-im" : "0.0.21.44",
"m-dynamic" : "0.0.7.73",
"m-article" : "0.0.0.10",
"m-muse" : "0.0.28.47",
"m-muse" : "0.0.28.49",
"m-tests" : "0.0.24.18",
"m-course" : "0.0.43.37",
......@@ -38,10 +38,10 @@ ext {
"ydl-platform" : "0.0.41.15",
//第二步 若干
"ydl-webview" : "0.0.38.82",
"ydl-webview" : "0.0.38.84",
"ydl-media" : "0.0.21.44",
"ydl-pay" : "0.0.18.19",
"m-audioim" : "0.0.49.29.90",
"m-audioim" : "0.0.49.29.94",
"ydl-flutter-base": "0.0.14.38",
//以下 几乎不会动
......@@ -93,13 +93,13 @@ ext {
"m-confide" : "0.0.49.74",
"m-consultant" : "0.0.60.25",
"m-fm" : "0.0.30.08",
"m-user" : "0.0.62.20",
"m-home" : "0.0.23.66",
"m-user" : "0.0.62.19",
"m-home" : "0.0.23.67",
"m-im" : "0.0.21.44",
"m-dynamic" : "0.0.7.73",
"m-article" : "0.0.0.8",
"m-muse" : "0.0.28.47",
"m-muse" : "0.0.28.49",
"m-tests" : "0.0.24.18",
"m-course" : "0.0.43.37",
//-------------- 业务模块 API 层 --------------
......@@ -121,10 +121,10 @@ ext {
"ydl-platform" : "0.0.41.15",
//第二步 若干
"ydl-webview" : "0.0.38.82",
"ydl-webview" : "0.0.38.84",
"ydl-media" : "0.0.21.44",
"ydl-pay" : "0.0.18.19",
"m-audioim" : "0.0.49.29.90",
"m-audioim" : "0.0.49.29.94",
"ydl-flutter-base": "0.0.14.38",
//以下 几乎不会动
......
......@@ -8,32 +8,43 @@ import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.text.TextUtils
import android.util.Log
import android.view.View
import android.webkit.WebResourceRequest
import android.webkit.WebSettings
import android.webkit.WebView
import android.webkit.WebViewClient
import com.ydl.utils.WebUrlParamsUtils
import com.ydl.webview.H5Params
import com.ydl.webview.IJavascriptHandler
import com.ydl.webview.TellData
import com.ydl.webview.WebModularServiceUtils.Companion.getWebService
import com.ydl.ydlcommon.base.BaseActivity
import com.ydl.ydlcommon.event.MeditationEvent
import com.yidianling.common.tools.LogUtil
import com.yidianling.muse.R
import com.yidianling.muse.dialog.JsInterface
import de.greenrobot.event.EventBus
import kotlinx.android.synthetic.main.dialog_choose_music.*
import org.json.JSONException
import org.json.JSONObject
/**
* Created by Ykai on 2022/5/26.
*/
class ChooseMusicActivity : BaseActivity() {
private val TAG = ChooseMusicActivity::class.java.simpleName
protected var jtoJHandle: IJavascriptHandler? = null
private lateinit var mUrl: String
/*** 路由传递过来的参数 */
val ROUTER_PARAMS = "routerParam"
companion object{
private const val URL = "url"
fun launch(context: Context, url: String) {
const val PARAMS = "h5Params"
/***接收参数 */
private var h5Params: H5Params? = null
fun launch(context: Context, h5Params:H5Params) {
Intent(context, ChooseMusicActivity::class.java).apply {
putExtra(URL, url)
putExtra(PARAMS, h5Params)
context.startActivity(this)
}
}
......@@ -41,7 +52,6 @@ class ChooseMusicActivity : BaseActivity() {
override fun initDataAndEvent() {
//正常获取入参
mUrl = intent.getStringExtra(URL)
}
override fun layoutResId(): Int {
......@@ -50,16 +60,22 @@ class ChooseMusicActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
getParam()
var tellData = TellData()
jtoJHandle = getWebService().getJavascripHandler(this, tellData.also { tellData = it })
initView()
}
@SuppressLint("SetJavaScriptEnabled")
@SuppressLint("SetJavaScriptEnabled", "JavascriptInterface")
private fun initView() {
// 移除有漏洞的系统接口
wv_choose_music.removeJavascriptInterface("searchBoxJavaBridge_")
wv_choose_music.removeJavascriptInterface("accessibility")
wv_choose_music.removeJavascriptInterface("accessibilityTraversal")
val mWebSettings: WebSettings = wv_choose_music.settings
mWebSettings.javaScriptEnabled = true //支持js
mWebSettings.defaultTextEncodingName = "GBK" //设置字符编码
mWebSettings.domStorageEnabled = true
......@@ -70,13 +86,11 @@ class ChooseMusicActivity : BaseActivity() {
mWebSettings.mixedContentMode = WebSettings.LOAD_NORMAL
}
wv_choose_music.scrollBarStyle = View.SCROLLBARS_INSIDE_OVERLAY //滚动条风格,为0指滚动条不占用空间,直接覆盖在网页上
val jsInterface = JsInterface(this)
wv_choose_music.addJavascriptInterface(jsInterface, "javascriptHandler")
wv_choose_music.addJavascriptInterface(jtoJHandle, "javascriptHandler")
val url = setUrlHeightParams(mUrl)
val url = setUrlHeightParams(h5Params?.url)
LogUtil.e(url)
wv_choose_music.loadUrl(url)
loadUrl(url,wv_choose_music)
wv_choose_music.webViewClient=object : WebViewClient(){
......@@ -85,9 +99,9 @@ class ChooseMusicActivity : BaseActivity() {
}
override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
view.loadUrl(request.url.toString())
loadUrl(request.url.toString(),view)
} else {
view.loadUrl(request.toString())
loadUrl(request.toString(),view)
}
return true
}
......@@ -97,7 +111,22 @@ class ChooseMusicActivity : BaseActivity() {
finish()
}
}
private fun getParam() {
if (null != intent) {
//正常获取入参
h5Params = intent.getSerializableExtra(PARAMS) as H5Params
//路由传递的入参
if (intent.hasExtra(ROUTER_PARAMS)) {
val json = intent.getStringExtra(ROUTER_PARAMS)
try {
val jsonObject = JSONObject(json)
h5Params = H5Params(jsonObject.getString("url"), "")
} catch (e: JSONException) {
e.printStackTrace()
}
}
}
}
fun switchSound(
mediaId: Int, meditationId: Long, meditationType: Int, businessType: Int,
......@@ -111,6 +140,18 @@ class ChooseMusicActivity : BaseActivity() {
EventBus.getDefault().post(event)
}
fun loadUrl(url: String?,web:WebView) {
if (TextUtils.isEmpty(url)) {
return
}
val resultUrl = if (h5Params?.suffix == true) WebUrlParamsUtils.getSuffix(
url,
jtoJHandle?.getUriAppendSuffix()
) else url
Log.e(TAG, resultUrl)
web.loadUrl(resultUrl)
}
/**
* 专家详情页改版 需要url后面拼接状态栏高度 并且隐藏导航栏
......@@ -118,14 +159,16 @@ class ChooseMusicActivity : BaseActivity() {
* @param url
* @return
*/
private fun setUrlHeightParams(url: String): String {
private fun setUrlHeightParams(url: String?): String {
var resultUrl: String? = url
try {
val uri = Uri.parse(url)
val host = uri.host
if (!TextUtils.isEmpty(host) && host.contains("nodeapi.ydl")) {
//马亮的需求,在nodeapi.ydl.com 地址后面拼上公共参数,用于判断是否为app
val uriAppendSuffix: String = ""
//马亮的需求,在nodeapi.ydl.com 地址后面拼上公共参数,用于判断是否为app
val uriAppendSuffix = jtoJHandle?.getUriAppendSuffix()
resultUrl = WebUrlParamsUtils.getSuffix(url, uriAppendSuffix)
}
} catch (e: Exception) {
......
......@@ -12,6 +12,7 @@ import com.bumptech.glide.Glide
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions
import com.ydl.media.audio.AudioPlayer
import com.ydl.media.view.PlayerFloatHelper
import com.ydl.webview.H5Params
import com.ydl.ydlcommon.base.BaseActivity
import com.ydl.ydlcommon.data.http.ThrowableConsumer
import com.ydl.ydlcommon.event.MeditationEvent
......@@ -276,7 +277,7 @@ class PlayMeditationActivity : BaseActivity() {
""
)
if (!mediaListLink.isNullOrBlank()) {
ChooseMusicActivity.launch(this, mediaListLink!!)
ChooseMusicActivity.launch(this, H5Params(mediaListLink,"") )
// val chooseMusicDialog = ChooseMusicDialog(this,H5Params(mediaListLink!!, null))
// chooseMusicDialog.show()
}
......
package com.yidianling.muse.dialog
import android.webkit.JavascriptInterface
import com.google.gson.GsonBuilder
import com.ydl.webview.H5JsBean
import com.yidianling.common.tools.LogUtil
import com.yidianling.muse.activity.ChooseMusicActivity
/**
* Created by Ykai on 2021/8/23.
* 个人主页js交互类
*/
class JsInterface(webActivity: ChooseMusicActivity) {
private var mWebActivity = webActivity
private val gson by lazy {
GsonBuilder().create()
}
@JavascriptInterface
fun sendDataToOC(params: String) {
LogUtil.i("js", params)
val jsData = gson.fromJson(params, H5JsBean::class.java)
jumpAction(jsData)
}
private fun jumpAction(jsData: H5JsBean) {
when (jsData.cmd?.action_name) {
"switch_sound" -> {
jsData.cmd!!.params?.let{
val mediaId = it.mediaId
val meditationId = it.meditationId
val meditationType = it.meditionType
val businessType = it.businessType
val buried = it.buried
val mediaUrl = it.mediaUrl
val mediaCoverUrl = it.coverImageUrl
val title = it.title
val desc = it.desc
val status = it.status
if (mediaId != null && meditationId!=null && meditationType!=null) {
mWebActivity.switchSound(mediaId,meditationType.toLong(),businessType!!, meditationId,buried,mediaUrl,mediaCoverUrl,title,desc,status)
}
}
}
}
}
}
\ No newline at end of file
......@@ -1065,12 +1065,6 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
}
}
public void onEvent(ReloadUrlEvent event) {
//刷新页面
loadUrl(event.getUrl());
// shouldClearHistory = true;
}
public void onEvent(UserBindPhoneEvent event) {
//刷新页面
loadUrl(h5Params.getUrl());
......
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