Commit ab5563cf by 徐健

测评首页接入

parent c4464515
...@@ -27,7 +27,7 @@ import com.yidianling.common.tools.ToastUtil ...@@ -27,7 +27,7 @@ import com.yidianling.common.tools.ToastUtil
import com.yidianling.consultant.ExpertSearchActivity.Companion.HOT_SEARCH_DOCTOR_NAME import com.yidianling.consultant.ExpertSearchActivity.Companion.HOT_SEARCH_DOCTOR_NAME
import com.yidianling.consultant.api.IConsultantService import com.yidianling.consultant.api.IConsultantService
import com.yidianling.fm.api.service.IFMService import com.yidianling.fm.api.service.IFMService
import com.yidianling.tests.home.TestHomeActivity import com.yidianling.tests.home.NewTestHomeActivity
import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.activity_main.*
/** /**
...@@ -91,7 +91,7 @@ class MainActivity : BaseLceActivity<DemoContract.View, DemoContract.Presenter>( ...@@ -91,7 +91,7 @@ class MainActivity : BaseLceActivity<DemoContract.View, DemoContract.Presenter>(
startActivity(Intent(this, MusicPlayActivity::class.java)) startActivity(Intent(this, MusicPlayActivity::class.java))
} }
bt_to_tests.setOnClickListener { bt_to_tests.setOnClickListener {
startActivity(Intent(this, TestHomeActivity::class.java)) startActivity(Intent(this, NewTestHomeActivity::class.java))
} }
bt_to_confide.setOnClickListener { bt_to_confide.setOnClickListener {
startActivity(Intent(this, ConfideHomeActivity::class.java)) startActivity(Intent(this, ConfideHomeActivity::class.java))
......
...@@ -75,6 +75,7 @@ dependencies { ...@@ -75,6 +75,7 @@ dependencies {
//开发时使用 //开发时使用
api project(':ydl-webview') api project(':ydl-webview')
api project(':ydl-platform') api project(':ydl-platform')
api project(":ydl-flutter-base")
implementation modularPublication('com.ydl:m-test-api') implementation modularPublication('com.ydl:m-test-api')
implementation modularPublication('com.ydl:m-user-api') implementation modularPublication('com.ydl:m-user-api')
}else { }else {
...@@ -82,6 +83,9 @@ dependencies { ...@@ -82,6 +83,9 @@ dependencies {
compileOnly rootProject.ext.dependencies["ydl-m-tests-api"] compileOnly rootProject.ext.dependencies["ydl-m-tests-api"]
compileOnly rootProject.ext.dependencies["ydl-m-user-api"] compileOnly rootProject.ext.dependencies["ydl-m-user-api"]
api rootProject.ext.dependencies["ydl-webview"] api rootProject.ext.dependencies["ydl-webview"]
api (rootProject.ext.dependencies["ydl-flutter-base"]){
transitive = true
}
api(rootProject.ext.dependencies["ydl-platform"]) { api(rootProject.ext.dependencies["ydl-platform"]) {
transitive = true transitive = true
} }
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
/> />
<!--测评首页--> <!--测评首页-->
<activity <activity
android:name=".home.TestHomeActivity" android:name=".home.NewTestHomeActivity"
android:screenOrientation="portrait" android:screenOrientation="portrait"
android:theme="@style/tests_NoTitleTheme" android:theme="@style/tests_NoTitleTheme"
/> />
......
package com.yidianling.tests.home
import com.alibaba.android.arouter.facade.annotation.Route
import com.ydl.ydl_flutter.flutter.base.BaseFlutterActivity
import com.yidianling.tests.home.plugin.TestPlugin
import org.json.JSONObject
/**
* flutter版测评首页
* Created by xj on 2019/11/19.
*/
@Route(path = "/ceshi/home")
class NewTestHomeActivity: BaseFlutterActivity() {
override fun initialRoute(): String {
return "native/test/home"
}
override fun initChannelPlugin(jsonObject: JSONObject) {
TestPlugin.Companion.rigister(this)
}
}
\ No newline at end of file
...@@ -39,7 +39,7 @@ import org.json.JSONObject ...@@ -39,7 +39,7 @@ import org.json.JSONObject
* @Company 壹点灵 * @Company 壹点灵
* @date 2018/7/26 * @date 2018/7/26
*/ */
@Route(path = "/ceshi/home") //@Route(path = "/ceshi/home")
class TestHomeActivity : BaseMvpActivity<ITestHomeContract.View,ITestHomeContract.Presenter>(), ITestHomeContract.View, SwipeToLoadHelper.LoadMoreListener, SwipeRefreshLayout.OnRefreshListener { class TestHomeActivity : BaseMvpActivity<ITestHomeContract.View,ITestHomeContract.Presenter>(), ITestHomeContract.View, SwipeToLoadHelper.LoadMoreListener, SwipeRefreshLayout.OnRefreshListener {
/** /**
......
package com.yidianling.tests.home.plugin
import android.app.Activity
import android.net.Uri
import android.util.Log
import com.ydl.webview.H5Params
import com.ydl.webview.NewH5Activity
import com.ydl.ydl_router.manager.YDLRouterManager
import com.ydl.ydl_router.manager.YDLRouterParams
import com.ydl.ydlcommon.base.config.HttpConfig
import com.ydl.ydlcommon.router.IYDLRouterConstant
import com.yidianling.tests.list.view.TestCategoryListActivity
import com.yidianling.tests.router.TestsIn
import com.yidianling.tests.search.TestSearchActivity
import io.flutter.app.FlutterActivity
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
/**
* Created by xj on 2019/11/19.
*/
class TestPlugin : MethodChannel.MethodCallHandler {
private var mActivity: FlutterActivity? = null
private constructor(activity: FlutterActivity) {
mActivity = activity
}
companion object {
const val CHANNEL: String = "lib/test_module/channel"
const val GO_BACK = "goBack" // 左上角返回按钮
const val GO_SEARCH = "goSearch" // 查找测评
const val GO_MY_TESTS = "goMyTests" // 我的测评
const val BANNER_CLICK = "bannerClick" // Banner点击
const val CATEGORY_CLICK = "categoryClick" // 分类点击
const val ADVERT_CLICK = "advertClick" // 实时测评点击
const val TEST_LIST_ITEM_CLICK = "testListItemClick" // 测评列表点击
const val LOOK_ALL_TEST = "lookAllTest" // 查看全部测评
fun rigister(activity: FlutterActivity) {
MethodChannel(activity.flutterView, CHANNEL).setMethodCallHandler(TestPlugin(activity))
}
}
override fun onMethodCall(methodCall: MethodCall, result: MethodChannel.Result) {
when (methodCall.method) {
GO_BACK -> {
mActivity?.finish()
}
GO_SEARCH -> {
mActivity?.let {
TestSearchActivity.start(mActivity!!)
}
}
GO_MY_TESTS -> {
if (!TestsIn.isLogin()) {
//如果未登录 走登录逻辑
mActivity?.startActivity(TestsIn.loginWayIntent(mActivity!!))
return
}
val testParam = H5Params(HttpConfig.MH5_URL + "ceshi/my-test", "测试记录")
mActivity?.let {
NewH5Activity.start(mActivity, testParam)
}
}
BANNER_CLICK -> {
var linkUrl: String? = methodCall.argument<String>("linkUrl")
linkUrl?.let {
link(linkUrl)
}
}
CATEGORY_CLICK -> {
mActivity?.let {
var tabName: String = methodCall.argument<String>("tabName")?:""
TestCategoryListActivity.start(mActivity!!, tabName)
}
}
ADVERT_CLICK -> {
var linkUrl: String? = methodCall.argument<String>("linkUrl")
linkUrl?.let {
link(linkUrl)
}
}
TEST_LIST_ITEM_CLICK -> {
var linkUrl: String? = methodCall.argument<String>("linkUrl")
linkUrl?.let {
link(linkUrl)
}
}
LOOK_ALL_TEST -> {
mActivity?.let {
TestCategoryListActivity.start(mActivity!!)
}
}
}
}
private fun link(linkUrl: String?) {
if (null == linkUrl || linkUrl.isEmpty()) {
return
}
if (linkUrl.startsWith("app")) {
val uri = Uri.parse(linkUrl)
if ("ceshi" == uri.host) {
val id = uri.getQueryParameter("id")
// YDLRouterManager.router(IYDLRouterConstant.ROUTER_TEST_DETAIL, YDLRouterParams().putExtra(IYDLRouterConstant.EXTRA_ID, id))
TestsIn.getTestsImpl().testDetailH5(id)
}
} else if (linkUrl.startsWith("http")) {
YDLRouterManager.router(
IYDLRouterConstant.ROUTER_H5_H5,
YDLRouterParams().putExtra(IYDLRouterConstant.EXTRA_URL, linkUrl), "")
} else {
YDLRouterManager.router(linkUrl)
}
}
}
\ No newline at end of file
...@@ -16,7 +16,6 @@ import com.ydl.ydlcommon.utils.SharedPreferencesEditor ...@@ -16,7 +16,6 @@ import com.ydl.ydlcommon.utils.SharedPreferencesEditor
import com.yidianling.common.tools.LogUtil import com.yidianling.common.tools.LogUtil
import com.yidianling.tests.R import com.yidianling.tests.R
import com.yidianling.tests.TestRetrofitApi import com.yidianling.tests.TestRetrofitApi
import com.yidianling.tests.home.TestHomeActivity
import com.yidianling.tests.home.bean.TestHomeBodyBean import com.yidianling.tests.home.bean.TestHomeBodyBean
import com.yidianling.tests.home.bean.TestHomeDataBean import com.yidianling.tests.home.bean.TestHomeDataBean
import com.yidianling.tests.home.config.ITestHomeConfig import com.yidianling.tests.home.config.ITestHomeConfig
...@@ -145,11 +144,6 @@ class TestHomeUtils { ...@@ -145,11 +144,6 @@ class TestHomeUtils {
return dataList return dataList
} }
fun jumpTestHomeActivity(context: Context) {
val intent = Intent(context, TestHomeActivity::class.java)
context.startActivity(intent)
}
/** /**
* 返回拼接好的人气字符串 * 返回拼接好的人气字符串
......
...@@ -34,5 +34,15 @@ dependencies { ...@@ -34,5 +34,15 @@ dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support:appcompat-v7:28.0.0'
api rootProject.ext.dependencies["ydl-flutter"] if (rootProject.ext.dev_mode) {
api project(':ydl-platform')
api fileTree(dir: 'lib', include: ['*.aar'])
}
else {
api rootProject.ext.dependencies["ydl-flutter"]
api(rootProject.ext.dependencies["ydl-platform"]) {
transitive = true
}
}
} }
...@@ -6,6 +6,7 @@ import android.graphics.PixelFormat ...@@ -6,6 +6,7 @@ import android.graphics.PixelFormat
import android.os.Bundle import android.os.Bundle
import android.util.AttributeSet import android.util.AttributeSet
import android.view.WindowManager import android.view.WindowManager
import com.ydl.ydl_flutter.flutter.base.plugin.CommonPlugin
import io.flutter.app.FlutterActivity import io.flutter.app.FlutterActivity
import io.flutter.plugins.GeneratedPluginRegistrant import io.flutter.plugins.GeneratedPluginRegistrant
import io.flutter.view.FlutterView import io.flutter.view.FlutterView
...@@ -24,7 +25,7 @@ abstract class BaseFlutterActivity : FlutterActivity() { ...@@ -24,7 +25,7 @@ abstract class BaseFlutterActivity : FlutterActivity() {
/** /**
* 路由传递过来的参数 * 路由传递过来的参数
*/ */
const val ROUTER_PARAMS = "routerParam" const val ROUTER_PARAMS = "routerParam"
} }
override fun createFlutterView(context: Context?): FlutterView { override fun createFlutterView(context: Context?): FlutterView {
...@@ -49,15 +50,17 @@ abstract class BaseFlutterActivity : FlutterActivity() { ...@@ -49,15 +50,17 @@ abstract class BaseFlutterActivity : FlutterActivity() {
return flutterView return flutterView
} }
public override fun onCreate( savedInstanceState: Bundle?) { public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
GeneratedPluginRegistrant.registerWith(this) GeneratedPluginRegistrant.registerWith(this)
/** /**
* 获取统一路由传递过来的参数并初始化交互通道 * 获取统一路由传递过来的参数并初始化交互通道
*/ */
val json = intent.getStringExtra(ROUTER_PARAMS) val json = intent.getStringExtra(ROUTER_PARAMS) ?: ""
initChannelPlugin(JSONObject(json))
CommonPlugin.rigisterActivity(this, flutterView)
initChannelPlugin(if (json.isEmpty()) JSONObject() else JSONObject(json))
} }
/** /**
......
...@@ -3,6 +3,7 @@ package com.ydl.ydl_flutter.flutter.base ...@@ -3,6 +3,7 @@ package com.ydl.ydl_flutter.flutter.base
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
import com.ydl.ydl_flutter.flutter.base.plugin.CommonPlugin
import com.ydl.ydl_flutter.flutter.io.flutter.facade.Flutter import com.ydl.ydl_flutter.flutter.io.flutter.facade.Flutter
import com.ydl.ydl_flutter.flutter.io.flutter.facade.FlutterFragment import com.ydl.ydl_flutter.flutter.io.flutter.facade.FlutterFragment
import io.flutter.view.FlutterView import io.flutter.view.FlutterView
...@@ -20,6 +21,7 @@ abstract class BaseFlutterFragment : FlutterFragment() { ...@@ -20,6 +21,7 @@ abstract class BaseFlutterFragment : FlutterFragment() {
activity!!, activity!!,
lifecycle, lifecycle,
initialRoute()) initialRoute())
CommonPlugin.rigisterFragment(this, mFlutterView!!)
initChannelPlugin(mFlutterView!!) initChannelPlugin(mFlutterView!!)
return mFlutterView!! return mFlutterView!!
} }
......
package com.ydl.ydl_flutter.flutter.base.plugin
import android.text.TextUtils
import com.ydl.ydl_flutter.BuildConfig
import com.ydl.ydl_flutter.flutter.base.BaseFlutterFragment
import com.ydl.ydlcommon.base.BaseApp
import com.ydl.ydlcommon.data.PlatformDataManager
import com.ydl.ydlcommon.modular.ModularServiceManager
import com.yidianling.common.tools.RxDeviceTool
import io.flutter.app.FlutterActivity
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
import io.flutter.view.FlutterView
/**
* Created by xj on 2019/11/19.
*/
class CommonPlugin : MethodChannel.MethodCallHandler {
private var mActivity: FlutterActivity? = null
private var mFragment: BaseFlutterFragment? = null
private constructor(activity: FlutterActivity) {
mActivity = activity
}
private constructor(fragment: BaseFlutterFragment) {
mFragment = fragment
}
companion object {
const val CHANNEL: String = "lib/common/channel"
const val GETPUBLICPARAMAS: String = "getPublicParamas"
fun rigisterActivity(activity: FlutterActivity, flutterView: FlutterView) {
MethodChannel(flutterView, CHANNEL).setMethodCallHandler(CommonPlugin(activity))
}
fun rigisterFragment(fragment: BaseFlutterFragment, flutterView: FlutterView) {
MethodChannel(flutterView, CHANNEL).setMethodCallHandler(CommonPlugin(fragment))
}
}
override fun onMethodCall(methodCall: MethodCall, result: MethodChannel.Result) {
when (methodCall.method) {
GETPUBLICPARAMAS -> {
val loginBean = ModularServiceManager.getPlatformUserService()?.getUser()
val mMap = mutableMapOf<String, Any>()
var uid = loginBean?.userId ?: ""
mMap["isDevelopment"] = BuildConfig.DEBUG
mMap["uid"] = if (TextUtils.isEmpty(uid)) "0" else uid
mMap["accessToken"] = loginBean?.token ?: ""
?: ""
mMap["isFromApp"] = "1"
mMap["ffrom"] = PlatformDataManager.getRam().getChannelName()
mMap["version"] = RxDeviceTool.getAppVersionName(BaseApp.getApp())
mMap["osBuild"] =
RxDeviceTool.getBuildMANUFACTURER() + "," + RxDeviceTool.getBuildBrandModel() + "," + RxDeviceTool.getOsBuileVersion() + "," + RxDeviceTool.getAppVersionName(
BaseApp.getApp()
)
result.success(mMap)
}
}
}
}
\ No newline at end of file
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