diff --git a/.idea/misc.xml b/.idea/misc.xml
index 707ee6e613..2dc54c489f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 40de9798e7..4146c63e4f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -98,6 +98,8 @@ dependencies {
// implementation rootProject.ext.dependencies.moduledemo2
implementation rootProject.ext.dependencies.carcallprovider
implementation rootProject.ext.dependencies.carcall
+ implementation rootProject.ext.dependencies.guideshowprovider
+ implementation rootProject.ext.dependencies.guideshow
implementation rootProject.ext.dependencies.modulemedia
implementation rootProject.ext.dependencies.modulefreshnews,{
exclude group:'com.mogo.module',module:'module-onlinecar'
@@ -121,6 +123,7 @@ dependencies {
implementation rootProject.ext.dependencies.modulesearch
implementation rootProject.ext.dependencies.mogomoduleback
implementation rootProject.ext.dependencies.mogomoduleguide
+ implementation rootProject.ext.dependencies.mogomoduleauth
} else {
implementation project(':modules:mogo-module-main')
implementation project(':foudations:mogo-commons')
@@ -128,6 +131,7 @@ dependencies {
implementation project(':modules:mogo-module-search')
implementation project(':modules:mogo-module-back')
implementation project(':modules:mogo-module-guide')
+ implementation project(':modules:mogo-module-authorize')
}
}
diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java
index 144e16a2f4..c9c51f6503 100644
--- a/app/src/main/java/com/mogo/launcher/MogoApplication.java
+++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java
@@ -15,6 +15,7 @@ import com.mogo.module.back.BackToLauncherConst;
import com.mogo.module.carchatting.card.CallChatConstant;
import com.mogo.module.common.MogoModule;
import com.mogo.module.common.MogoModulePaths;
+import com.mogo.module.guideshow.provider.GuideShowProviderConstant;
import com.mogo.module.media.MediaConstants;
import com.mogo.module.onlinecar.OnLineCarConstants;
import com.mogo.module.push.PushUIConstants;
@@ -25,8 +26,10 @@ import com.mogo.service.connection.IMogoSocketManager;
import com.mogo.utils.logger.LogLevel;
import com.mogo.utils.logger.Logger;
-import static com.mogo.module.guide.GuideConstant.PATH_GUIDE_AGREEMENT_FRAGMENT;
-import static com.mogo.module.guide.GuideConstant.PATH_GUIDE_AGREEMENT_MODULE_NAME;
+import static com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant.PATH_AGREEMENT_FRAGMENT;
+import static com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant.PATH_AGREEMENT_MODULE_NAME;
+import static com.mogo.module.guide.GuideConstant.PATH_GUIDE_FRAGMENT;
+import static com.mogo.module.guide.GuideConstant.PATH_GUIDE_MODULE_NAME;
/**
* @author congtaowang
@@ -47,7 +50,10 @@ public class MogoApplication extends AbsMogoApplication {
crashSystem.setDebug(BuildConfig.DEBUG);
Logger.init(BuildConfig.DEBUG ? LogLevel.DEBUG : LogLevel.OFF);
- MogoModulePaths.addModule(new MogoModule(PATH_GUIDE_AGREEMENT_FRAGMENT, PATH_GUIDE_AGREEMENT_MODULE_NAME));
+ MogoModulePaths.addModule(new MogoModule(PATH_GUIDE_FRAGMENT, PATH_GUIDE_MODULE_NAME));
+ MogoModulePaths.addModule(new MogoModule(PATH_AGREEMENT_FRAGMENT, PATH_AGREEMENT_MODULE_NAME));
+ MogoModulePaths.addModule(new MogoModule(GuideShowProviderConstant.PATH_GUIDE_SHOW_FRAGMENT, GuideShowProviderConstant.PATH_GUIDE_SHOW_MODULE_NAME));
+
//运营位卡片,需要默认显示,放在第一个加载
MogoModulePaths.addModule(new MogoModule(AdCardConstants.TAG, AdCardConstants.MODULE_NAME));
MogoModulePaths.addModule(new MogoModule(MediaConstants.TAG, MediaConstants.MODULE_TYPE));
diff --git a/config.gradle b/config.gradle
index 42749665e5..e3d37b397e 100644
--- a/config.gradle
+++ b/config.gradle
@@ -96,6 +96,8 @@ ext {
moduleextensions : "com.mogo.module:module-extensions:${MOGO_MODULE_EXTENSIONS_VERSION}",
carcall : "com.mogo.module.carchatting:module-carchatting:${CARCHATTING_VERSION}",
carcallprovider : "com.mogo.module.carchatting:module-carchatting-provider:${CARCHATTINGPROVIDER_VERSION}",
+ guideshow : "com.mogo.module.guideshow:module-guideshow:${MOGO_MODULE_GUIDESHOW_VERSION}",
+ guideshowprovider : "com.mogo.module.guideshow:module-guideshow-provider:${MOGO_MODULE_GUIDESHOW_PROVIDER_VERSION}",
// 在线车辆
moduleonlinecar : "com.mogo.module:module-onlinecar:${MOGO_MODULE_ONLINECAR_VERSION}",
// V2X
diff --git a/gradle.properties b/gradle.properties
index 79610a7704..4abdde39cd 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -55,6 +55,10 @@ MOGO_MODULE_TANLU_VERSION=1.0.3-SNAPSHOT
CARCHATTING_VERSION=1.0.2.3-SNAPSHOT
# 车聊聊接口
CARCHATTINGPROVIDER_VERSION=1.0.2.3-SNAPSHOT
+# 视频引导
+MOGO_MODULE_GUIDESHOW_VERSION=1.0.0-SNAPSHOT
+# 视频引导接口
+MOGO_MODULE_GUIDESHOW_PROVIDER_VERSION=1.0.1-SNAPSHOT
# 在线车辆F
MOGO_MODULE_ONLINECAR_VERSION=1.0.2-SNAPSHOT
# v2x
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java
index 0c8bf9483d..28a4b6d7eb 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java
@@ -570,6 +570,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
if ( DebugConfig.isDebug() ) {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
}
+ Logger.d( TAG, "解锁锁车" );
mockTouchEvent();
}
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/utils/MogoMapUtils.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/utils/MogoMapUtils.java
index 9fddebce13..ee152da0cb 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/utils/MogoMapUtils.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/utils/MogoMapUtils.java
@@ -89,7 +89,6 @@ public class MogoMapUtils {
south = tmp;
}
-
Logger.d( TAG, "west = %s, east = %s, north = %s, south = %s", west, east, north, south );
return new LatLngBounds.Builder().include( new LatLng( east, north ) ).include( new LatLng( west, south ) ).build();
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/IMogoAuthorizeController.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/IMogoAuthorizeController.kt
index 3f0c24f96b..8a5f7fccc4 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/IMogoAuthorizeController.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/IMogoAuthorizeController.kt
@@ -5,6 +5,10 @@ import com.mogo.module.authorize.model.BaseResponse
import com.mogo.module.authorize.model.IMogoAuthorizeModel
import com.mogo.module.authorize.model.bean.AgreementData
import com.mogo.module.authorize.net.request
+import com.mogo.module.authorize.util.DateUtil.parseDateToTime
+import com.mogo.module.authorize.util.SharedPreferenceUtil.getAuthorizeVersion
+import com.mogo.module.authorize.util.SharedPreferenceUtil.setAuthorizeStatus
+import com.mogo.module.authorize.util.SharedPreferenceUtil.updateAuthorizeVersion
import com.mogo.utils.logger.Logger
open class IMogoAuthorizeController {
@@ -16,40 +20,51 @@ open class IMogoAuthorizeController {
private val authorizeModel: IMogoAuthorizeModel by lazy { IMogoAuthorizeModel() }
fun invokeAuthorizeContent(tag: String, agreementType: Int) {
- if (agreementType == -1) {
+ realInvokeAuthorizeContent(agreementType, {
+ if (agreementType == -1) {
+ getAuthorizeContentListener(tag, { listener ->
+ listener.requestContentFailed("invokeAuthorizeContent param tag is not right")
+ }, {
+ Logger.d(TAG, "invokeAuthorizeContent ---checkAgreementType can not find tag :$tag")
+ })
+ }
+ }, {
getAuthorizeContentListener(tag, { listener ->
- listener.requestContentFailed("invokeAuthorizeContent param tag is not right")
+ if (it.result != null && it.result.agreement.agreementContent != null) {
+ listener.requestContentSuccess(it.result.agreement)
+ } else {
+ listener.requestContentFailed("request authorize content success ,but result data is :${it.result}")
+ }
}, {
- Logger.d(TAG, "invokeAuthorizeContent ---checkAgreementType can not find tag :$tag")
+ Logger.d(TAG, "invokeAuthorizeContent --- can not find listener by this tag :$tag")
})
- }
+ }, { msg: String ->
+ getAuthorizeContentListener(tag, { listener ->
+ listener.requestContentFailed(msg)
+ }, {
+ Logger.d(TAG, "invokeAuthorizeContent --- can not find listener by this tag :$tag")
+ })
+ })
+ }
+
+ private fun realInvokeAuthorizeContent(agreementType: Int, onStart: (() -> Unit), onSuccess: ((BaseResponse) -> Unit), onError: ((String) -> Unit)) {
+ onStart.invoke()
try {
request> {
loader {
authorizeModel.invokeAuthorizeContent(agreementType)
}
onSuccess {
- getAuthorizeContentListener(tag, { listener ->
- if (it.result != null && it.result.agreement.agreementContent != null) {
- listener.requestContentSuccess(it.result.agreement)
- } else {
- listener.requestContentFailed("request authorize content success ,but result data is :${it.result}")
- }
- }, {
- Logger.d(TAG, "invokeAuthorizeContent --- can not find listener by this tag :$tag")
- })
+ onSuccess.invoke(it)
}
onError {
- getAuthorizeContentListener(tag, { listener ->
- listener.requestContentFailed(it.message
- ?: "request authorize content failed,please check network")
- }, {
- Logger.d(TAG, "invokeAuthorizeContent --- can not find listener by this tag :$tag")
- })
+ onError.invoke(it.message
+ ?: "realInvokeAuthorizeContent onError, message is null")
}
}
} catch (e: Exception) {
e.printStackTrace()
+ onError.invoke(e.message ?: "realInvokeAuthorizeContent has exception, message is null")
}
}
@@ -62,4 +77,28 @@ open class IMogoAuthorizeController {
}
}
+ fun updateAgreementVersion(agreementType: Int) {
+ realInvokeAuthorizeContent(agreementType, {
+ Logger.d(TAG, "ready to update agreement")
+ }, {
+ if (it.result != null) {
+ val agreement = it.result.agreement
+ val updateTime = agreement.tUserAgreementEntity.updateTime
+ val currentTime = parseDateToTime(updateTime)
+ if (hasNewVersion(currentTime)) {
+ updateAuthorizeVersion(currentTime)
+ setAuthorizeStatus(agreementType, false)
+ }else{
+ Logger.d(TAG,"no new version")
+ }
+ }
+ }, { s: String ->
+ Logger.d(TAG, "updateAgreementAndAuthorization reason:$s")
+ })
+ }
+
+ private fun hasNewVersion(currentTime: Long): Boolean {
+ val oldVersion = getAuthorizeVersion()
+ return currentTime > oldVersion
+ }
}
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeManagerImpl.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeManagerImpl.kt
index 9f331bc92f..ca4faaa0fc 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeManagerImpl.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeManagerImpl.kt
@@ -4,23 +4,29 @@ import com.mogo.module.authorize.authprovider.invoke.IMogoAuthorizeContentListen
import com.mogo.module.authorize.authprovider.invoke.IMogoAuthorizeInvoke
import com.mogo.module.authorize.authprovider.module.IMogoAcquireAuthorizeListener
import com.mogo.module.authorize.model.proxy.AuthorizeProxy
+import com.mogo.module.authorize.model.proxy.toAuthorizeType
import com.mogo.module.authorize.util.SharedPreferenceUtil.needAuthorization
import com.mogo.utils.logger.Logger
open abstract class MogoAuthorizeManagerImpl : IMogoAuthorizeInvoke {
+ companion object {
+ const val TAG = "AuthorizeManagerImpl"
+ }
+
private val baseController: IMogoAuthorizeController by lazy { IMogoAuthorizeController() }
- override fun needAuthorize(): Boolean {
-
- return needAuthorization()
+ override fun needAuthorize(tag: String): Boolean {
+ Logger.d(TAG, "needAuthorize update agreement in background")
+ baseController.updateAgreementVersion(tag.toAuthorizeType())
+ return needAuthorization(tag.toAuthorizeType())
}
override fun invokeAuthorizeContent(tag: String) {
//todo 后面动态代理统一处理校验问题
- Logger.d("invokeAuthorizeContent","tag:$tag")
+ Logger.d(TAG, "tag:$tag")
val agreementType = AuthorizeProxy.getAuthorizeType(tag)
- Logger.d("invokeAuthorizeContent","agreementType:$agreementType")
+ Logger.d(TAG, "agreementType:$agreementType")
baseController.invokeAuthorizeContent(tag, agreementType)
}
@@ -33,7 +39,7 @@ open abstract class MogoAuthorizeManagerImpl : IMogoAuthorizeInvoke {
}
override fun registerAuthorizeListener(tag: String, listener: IMogoAcquireAuthorizeListener) {
- Logger.d("AuthorizeManager", "registerAuthorize tag : $tag listener:$listener")
+ Logger.d(TAG, "registerAuthorize tag : $tag listener:$listener")
MogoAuthorizeRegisterHandler.registerAuthorizeListener(tag, listener)
}
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeProvider.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeProvider.kt
new file mode 100644
index 0000000000..e3850d1c71
--- /dev/null
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeProvider.kt
@@ -0,0 +1,80 @@
+package com.mogo.module.authorize.authprovider.biz
+
+import android.content.Context
+import android.os.Bundle
+import android.view.View
+import androidx.fragment.app.Fragment
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.mogo.map.listener.IMogoMapListener
+import com.mogo.map.location.IMogoLocationListener
+import com.mogo.map.marker.IMogoMarkerClickListener
+import com.mogo.map.navi.IMogoNaviListener
+import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant.Companion.PATH_AGREEMENT_FRAGMENT
+import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant.Companion.PATH_AGREEMENT_MODULE_NAME
+import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant.Companion.AUTHORIZE_TYPE_LAUNCHER_MAIN
+import com.mogo.module.authorize.authprovider.launcher.MogoMainAuthorize.Companion.mogoAuthShow
+import com.mogo.module.authorize.util.SharedPreferenceUtil.hasGuide
+import com.mogo.service.module.IMogoModuleLifecycle
+import com.mogo.service.module.IMogoModuleProvider
+import com.mogo.service.module.ModuleType
+import com.mogo.utils.logger.Logger
+
+@Route(path = PATH_AGREEMENT_FRAGMENT)
+class MogoAuthorizeProvider : IMogoModuleProvider {
+
+ companion object {
+ const val TAG = "MogoAuthorizeProvider"
+ }
+
+ override fun createFragment(context: Context?, data: Bundle?): Fragment? {
+ return null
+ }
+
+ override fun createView(context: Context?): View? {
+ return null
+ }
+
+ override fun getModuleName(): String {
+ return PATH_AGREEMENT_MODULE_NAME
+ }
+
+ override fun getCardLifecycle(): IMogoModuleLifecycle? {
+ return null
+ }
+
+ override fun getMapListener(): IMogoMapListener? {
+ return null
+ }
+
+ override fun getType(): Int {
+ return ModuleType.TYPE_SERVICE
+ }
+
+ override fun getNaviListener(): IMogoNaviListener? {
+ return null
+ }
+
+ override fun getLocationListener(): IMogoLocationListener? {
+ return null
+ }
+
+ override fun getMarkerClickListener(): IMogoMarkerClickListener? {
+ return null
+ }
+
+ override fun init(context: Context?) {
+ if (hasGuide() && mogoAuthShow.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_MAIN)) {
+ mogoAuthShow.invokeAuthorizeForShow()
+ } else {
+ Logger.d(TAG, "wait for guide invoke")
+ }
+ }
+
+ override fun getAppPackage(): String? {
+ return null
+ }
+
+ override fun getAppName(): String? {
+ return null
+ }
+}
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/AuthorizeConstant.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/AuthorizeConstant.kt
index 5c9e0be663..d41c4df56e 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/AuthorizeConstant.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/AuthorizeConstant.kt
@@ -5,5 +5,15 @@ class AuthorizeConstant {
companion object{
const val PROVIDER_MODULE = "/authorize/biz"
const val PROVIDER_LAUNCHER = "/authorize/showbiz"
+
+ /**
+ * 展示用户协议模块地址
+ */
+ const val PATH_AGREEMENT_FRAGMENT = "/agreement/showFragment"
+
+ /**
+ * provider模块实例名称(暂时仅有卡片用到)
+ */
+ const val PATH_AGREEMENT_MODULE_NAME = "AGREEMENT_MODULE_NAME"
}
}
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/IMogoAuthorizeInvoke.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/IMogoAuthorizeInvoke.kt
index cf02f66f73..7cdfc6af18 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/IMogoAuthorizeInvoke.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/IMogoAuthorizeInvoke.kt
@@ -8,7 +8,7 @@ interface IMogoAuthorizeInvoke : IMogoAuthorizeRegister {
/**
* 是否需要授权
*/
- fun needAuthorize(): Boolean
+ fun needAuthorize(tag: String): Boolean
/**
* 获取授权内容
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/IMogoAuthorizeMainManager.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/IMogoAuthorizeMainManager.kt
index 810997e582..c20053c616 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/IMogoAuthorizeMainManager.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/IMogoAuthorizeMainManager.kt
@@ -13,8 +13,8 @@ class IMogoAuthorizeMainManager : IMogoAuthorizeMainProvider {
return mogoAuthShow.hasRegister(tag)
}
- override fun needAuthorize(): Boolean {
- return mogoAuthShow.needAuthorize()
+ override fun needAuthorize(tag: String): Boolean {
+ return mogoAuthShow.needAuthorize(tag)
}
override fun invokeAuthorizeContent(tag: String) {
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoAuthorizeMainController.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoAuthorizeMainController.kt
index 976f98d086..0a0e3f31b9 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoAuthorizeMainController.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoAuthorizeMainController.kt
@@ -5,7 +5,9 @@ import com.mogo.module.authorize.authprovider.biz.MogoAuthorizeRegisterHandler
import com.mogo.module.authorize.model.BaseResponse
import com.mogo.module.authorize.model.bean.AGREEMENT_EFFECT
import com.mogo.module.authorize.model.bean.AGREEMENT_NOT_EFFECT
+import com.mogo.module.authorize.model.proxy.toAuthorizeType
import com.mogo.module.authorize.net.request
+import com.mogo.module.authorize.util.SharedPreferenceUtil.setAuthorizeStatus
import com.mogo.utils.logger.Logger
object MogoAuthorizeMainController : IMogoAuthorizeController() {
@@ -14,30 +16,27 @@ object MogoAuthorizeMainController : IMogoAuthorizeController() {
@Synchronized
fun agreeAuthorize(tag: String, agrId: Long, onSuccess: (() -> Unit), onError: ((String) -> Unit)) {
- val acquireAuthListener = MogoAuthorizeRegisterHandler.getAuthorizeListener(tag)
+
updateAuthorize(agrId, AGREEMENT_EFFECT, {
- if (acquireAuthListener != null) {
- onSuccess.invoke()
- acquireAuthListener.authorizeSuccess()
- } else {
- Logger.d(TAG, "agreeAuthorize --- can not find listener by this tag :$tag ")
- }
+ authorizeSuccess(tag)
+ setAuthorizeStatus(tag.toAuthorizeType(), true)
+ onSuccess.invoke()
}, {
val errorMsg = it ?: "agreeAuthorize failed,please check network"
- onError.invoke(errorMsg)
authorizeFailed(tag, errorMsg)
+ onError.invoke(errorMsg)
})
}
@Synchronized
fun disAgreeAuthorize(tag: String, agrId: Long, onSuccess: (() -> Unit), onError: ((String) -> Unit)) {
updateAuthorize(agrId, AGREEMENT_NOT_EFFECT, {
- onSuccess.invoke()
authorizeFailed(tag, "UserDisAgree authorize")
+ onSuccess.invoke()
}, {
val errorMsg = it ?: "disAgreeAuthorize failed,please check network"
- onError.invoke(errorMsg)
authorizeFailed(tag, errorMsg)
+ onError.invoke(errorMsg)
})
}
@@ -64,4 +63,12 @@ object MogoAuthorizeMainController : IMogoAuthorizeController() {
}
}
+ private fun authorizeSuccess(tag: String) {
+ val acquireAuthListener = MogoAuthorizeRegisterHandler.getAuthorizeListener(tag)
+ if (acquireAuthListener != null) {
+ acquireAuthListener.authorizeSuccess()
+ } else {
+ Logger.d(TAG, "agreeAuthorize --- can not find listener by this tag :$tag ")
+ }
+ }
}
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoMainAuthorize.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoMainAuthorize.kt
index af33c45ed5..7d8ab11136 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoMainAuthorize.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoMainAuthorize.kt
@@ -6,6 +6,7 @@ import com.mogo.module.authorize.authprovider.biz.MogoAuthorizeManagerImpl
import com.mogo.module.authorize.authprovider.biz.MogoAuthorizeRegisterHandler
import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant.Companion.AUTHORIZE_TYPE_LAUNCHER_MAIN
import com.mogo.module.authorize.fragment.AuthorizeFragment
+import com.mogo.module.authorize.model.proxy.toAuthorizeType
import com.mogo.module.authorize.util.SharedPreferenceUtil.hasAuth
import com.mogo.service.IMogoServiceApis
import com.mogo.service.MogoServicePaths
@@ -60,7 +61,7 @@ class MogoMainAuthorize private constructor() : MogoAuthorizeManagerImpl(), IMog
onError.invoke("invoke should be in main thread")
return
}
- if (hasAuth()) {
+ if (hasAuth(tag.toAuthorizeType())) {
onError.invoke("already authorize,do not repeat operation")
return
}
@@ -87,17 +88,17 @@ class MogoMainAuthorize private constructor() : MogoAuthorizeManagerImpl(), IMog
Logger.d(TAG, "pushFragmentToMainView")
val mogoService = ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation()
if (mogoService is IMogoServiceApis) {
+ push.invoke()
mogoService.fragmentManagerApi.push(builderWrapper)
}
- push.invoke()
}
private inline fun popFragmentFromMainView(pop: (() -> Unit)) {
val mogoService = ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation()
if (mogoService is IMogoServiceApis) {
+ pop.invoke()
mogoService.fragmentManagerApi.pop()
}
- pop.invoke()
}
}
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/module/IMogoAuthorizeModuleManager.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/module/IMogoAuthorizeModuleManager.kt
index 64626be098..d33c9f66e5 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/module/IMogoAuthorizeModuleManager.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/module/IMogoAuthorizeModuleManager.kt
@@ -8,8 +8,8 @@ import com.mogo.module.authorize.authprovider.module.MogoModuleAuthorize.Compani
@Route(path = AuthorizeConstant.PROVIDER_MODULE)
class IMogoAuthorizeModuleManager : IMogoAuthorizeModuleProvider {
- override fun needAuthorize(): Boolean {
- return mogoAuth.needAuthorize()
+ override fun needAuthorize(tag: String): Boolean {
+ return mogoAuth.needAuthorize(tag)
}
override fun invokeAuthorizeForShow() {
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/fragment/AuthorizeFragment.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/fragment/AuthorizeFragment.kt
index 7d2dcb8258..7e919f996d 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/fragment/AuthorizeFragment.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/fragment/AuthorizeFragment.kt
@@ -93,6 +93,7 @@ class AuthorizeFragment(private val invokeTag: String) : MvpFragment, AuthorizeContract.Biz, IMogoAuthorizeContentListener {
@@ -14,6 +17,7 @@ class AuthorizePresenter : Presenter, AuthorizeContract.
}
private var invokeTag: String? = null
+ private var updateTime: Long = 0L
constructor(invokeTag: String, view: AuthorizeContract.View?) : super(view) {
this.invokeTag = invokeTag
@@ -42,6 +46,9 @@ class AuthorizePresenter : Presenter, AuthorizeContract.
val title = userAgreement.tUserAgreementEntity.title
val bottomContent = userAgreement.tUserAgreementEntity.agreementButtonFirst
val lastContent = userAgreement.tUserAgreementEntity.agreementButtonSecond
+ val tmpUpdate = userAgreement.tUserAgreementEntity.updateTime
+ updateTime = parseDateToTime(tmpUpdate)
+ Logger.d(TAG, "updateTime ===== $updateTime")
mView.showAuthorizationAgreementContent(id, content, title, bottomContent, lastContent)
} else {
mView.showAuthorizationError()
@@ -50,15 +57,15 @@ class AuthorizePresenter : Presenter, AuthorizeContract.
override fun requestContentFailed(errorMsg: String) {
Logger.d(TAG, "requestContentFailed errorMsg:$errorMsg")
-// mView.showAuthorizationAgreementContent(0, "123", "123456", "34234", "3543535")
mView.showAuthorizationError()
}
override fun agreeAuthorize(tag: String, agreementId: Long) {
mogoAuthShow.agreeAuthorize(tag, agreementId, {
Logger.d(TAG, "agreeAuthorize success")
+ updateAuthorizeVersion(updateTime)
closeAuthorizeView()
- }, { s: String ->
+ }, {
Logger.d(TAG, "agreeAuthorize failed")
closeAuthorizeView()
})
@@ -67,7 +74,7 @@ class AuthorizePresenter : Presenter, AuthorizeContract.
override fun disAgreeAuthorize(tag: String, agreementId: Long) {
mogoAuthShow.disAgreeAuthorize(tag, agreementId, {
closeAuthorizeView()
- }, { s: String ->
+ }, {
closeAuthorizeView()
})
}
@@ -80,8 +87,8 @@ class AuthorizePresenter : Presenter, AuthorizeContract.
super.onDestroy(owner)
Logger.d(TAG, "onDestroy invokeTag : $invokeTag")
invokeTag?.let {
- mogoAuthShow.unregisterInvokeAuthorizeContentListener(it)
- mogoAuthShow.unregisterAuthorizeListener(it)
+ MogoAuthorizeRegisterHandler.getAuthorizeContentListener(it)?.requestContentFailed("user exit authorize by back press")
+ MogoAuthorizeRegisterHandler.getAuthorizeListener(it)?.authorizeFailed("user exit authorize by back press")
}
}
}
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/proxy/AuthorizeProxy.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/proxy/AuthorizeProxy.kt
index 799259266a..093b4b20e8 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/proxy/AuthorizeProxy.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/proxy/AuthorizeProxy.kt
@@ -9,6 +9,11 @@ import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant.Co
import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant.Companion.AUTHORIZE_TYPE_NOVELTY
import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant.Companion.AUTHORIZE_TYPE_TAN_LU
+
+fun String.toAuthorizeType(): Int {
+ return AuthorizeProxy.getAuthorizeType(this)
+}
+
class AuthorizeProxy {
companion object {
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/util/DateUtil.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/util/DateUtil.kt
new file mode 100644
index 0000000000..cba4cd0248
--- /dev/null
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/util/DateUtil.kt
@@ -0,0 +1,11 @@
+package com.mogo.module.authorize.util
+
+import java.util.*
+
+object DateUtil {
+
+ fun parseDateToTime(tmpDate: String): Long {
+ val time = Date(tmpDate)
+ return time.time
+ }
+}
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/util/SharedPreferenceUtil.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/util/SharedPreferenceUtil.kt
index 68dc8a288d..d585622cde 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/util/SharedPreferenceUtil.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/util/SharedPreferenceUtil.kt
@@ -6,16 +6,30 @@ import com.mogo.utils.storage.SharedPrefsMgr
object SharedPreferenceUtil {
private const val HAS_AUTH = "HAS_AUTH"
+ private const val HAS_GUIDE = "HAS_GUIDE"
+ private const val AUTHORIZE_UPDATE_TIME = "AUTHORIZE_UPDATE_TIME"
- fun needAuthorization(): Boolean {
- return !hasAuth()
+ fun needAuthorization(type: Int): Boolean {
+ return !hasAuth(type)
}
- fun hasAuth(): Boolean {
- return SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()).getBoolean(HAS_AUTH, false)
+ fun hasAuth(type: Int): Boolean {
+ return SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()).getBoolean(HAS_AUTH + type, false)
}
- fun setAuthorizeStatus() {
- SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()).putBoolean(HAS_AUTH, true)
+ fun setAuthorizeStatus(type: Int, authorize: Boolean) {
+ SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()).putBoolean(HAS_AUTH + type, authorize)
+ }
+
+ fun updateAuthorizeVersion(updateTime: Long) {
+ SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()).putLong(AUTHORIZE_UPDATE_TIME, updateTime)
+ }
+
+ fun getAuthorizeVersion(): Long {
+ return SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()).getLong(AUTHORIZE_UPDATE_TIME, 0L)
+ }
+
+ fun hasGuide(): Boolean {
+ return SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()).getBoolean(HAS_GUIDE, false)
}
}
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/voice/VoiceUtil.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/voice/VoiceUtil.kt
index b393c41670..e7785dbd6b 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/voice/VoiceUtil.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/voice/VoiceUtil.kt
@@ -23,8 +23,8 @@ object VoiceUtil {
}
//WakeUp Command (Intent)
- const val VOICE_INTENT_AGREE = "system.application.operation" //同意
- const val VOICE_INTENT_DISAGREE = "system.application.operation" //不同意
+ const val VOICE_INTENT_AGREE = "com.zhidao.agree" //同意
+ const val VOICE_INTENT_DISAGREE = "com.zhiao.disagree" //不同意
//unWakeUp Command
const val VOICE_REGISTER_AUTHORIZE_AGREE = "CMD_AUTHORIZATION_AGREE"
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java
index fdf8030545..1449cfed75 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java
@@ -65,6 +65,8 @@ import java.util.Map;
import retrofit2.http.HEAD;
+import static com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE;
+
/**
* @author congtaowang
* @since 2020-01-07
@@ -121,6 +123,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
private TextView ivMode;
private IMogoPolyline iMogoPolyline;
+ public static boolean isClickShare;
@Override
protected int getLayoutId() {
@@ -131,7 +134,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
protected void initViews() {
mApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( getContext() );
mIMogoAuthorizeModuleManager = (IMogoAuthorizeModuleManager) ARouter.getInstance().build(AuthorizeConstant.PROVIDER_MODULE).navigation(getContext());
- mIMogoAuthorizeModuleManager.registerAuthorizeListener(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE, this);
+ mIMogoAuthorizeModuleManager.registerAuthorizeListener(AUTHORIZE_TYPE_LAUNCHER_SHARE, this);
mEntrancePresenter = new EntrancePresenter( getContext(), this, mIMogoAuthorizeModuleManager );
mMogoFragmentManager = mApis.getFragmentManagerApi();
@@ -173,31 +176,16 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
mUploadRoadCondition = findViewById( R.id.module_entrance_id_upload_road_condition );
mUploadRoadCondition.setOnClickListener( view -> {
- ShareControl.getInstance( getActivity() ).showDialog();
- traceData( "1" );
+ isClickShare = true;
+ if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
+ } else {
+ ShareControl.getInstance( getActivity() ).showDialog();
+ traceData( "1" );
+ }
} );
mVRMode = findViewById( R.id.module_entrance_id_vr_mode );
mVRMode.setOnClickListener( view -> {
-
- mMogoStatusManager.setUserInteractionStatus( TAG, true, false );
- Rect mBoundRect = new Rect();
- final int paddingTop = WindowUtils.dip2px( getContext(), 250 );
- final int paddingBottom = WindowUtils.dip2px( getContext(), 150 );
- final int paddingRight = WindowUtils.dip2px( getContext(), 150 );
- final int paddingLeft = WindowUtils.dip2px( getContext(), 650 );
-
- mBoundRect.bottom = paddingBottom;
- mBoundRect.top = paddingTop;
- mBoundRect.left = paddingLeft;
- mBoundRect.right = paddingRight;
- mMApUIController.showBounds( TAG,
- new MogoLatLng(
- mService.getSingletonLocationClient( getContext() ).getLastKnowLocation().getLatitude(),
- mService.getSingletonLocationClient( getContext() ).getLastKnowLocation().getLongitude()
- ),
- Arrays.asList( new MogoLatLng( 39.9736012000, 116.4220762300 ) ),
- mBoundRect,
- false );
} );
mMove2CurrentLocation = findViewById( R.id.module_entrance_id_move2_current_location );
@@ -206,8 +194,8 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
if ( location != null ) {
if ( !mMogoStatusManager.isADASShow() ) {
mMogoStatusManager.setUserInteractionStatus( TAG, true, false );
- mMApUIController.changeZoom( 16.0f );
mMApUIController.setLockZoom( 16 );
+ mMApUIController.changeZoom( 16.0f );
}
mMogoStatusManager.setUserInteractionStatus( TAG, true, false );
mMApUIController.recoverLockMode();
@@ -310,14 +298,20 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
mEntrancePresenter.unregisterUnWake();
}
- mIMogoAuthorizeModuleManager.unregisterAuthorizeListener(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE);
+ isClickShare = false;
+ mIMogoAuthorizeModuleManager.unregisterAuthorizeListener(AUTHORIZE_TYPE_LAUNCHER_SHARE);
}
@Override
public void authorizeSuccess() {
- Log.d( TAG, "authorizeSuccess --------> " );
- mEntrancePresenter.handleNeedAuthorizeCmd();
+ Log.d(TAG, "authorizeSuccess --------> isClickShare = " + isClickShare);
+ if (isClickShare) {
+ ShareControl.getInstance( getActivity() ).showDialog();
+ traceData( "1" );
+ } else {
+ mEntrancePresenter.handleNeedAuthorizeCmd();
+ }
}
@Override
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java
index b9d879615f..d5945ccce5 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java
@@ -25,6 +25,8 @@ import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
+import static com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE;
+
/**
* @author congtaowang
* @since 2020-01-07
@@ -74,30 +76,30 @@ public class EntrancePresenter extends Presenter {
private IMogoVoiceCmdCallBack mogoVoiceListener = new IMogoVoiceCmdCallBack() {
@Override
public void onCmdSelected(String cmd) {
- Log.d(TAG, "免唤醒 mogoVoiceListener needAuthorize = " + mIMogoAuthorizeModuleManager.needAuthorize() + " >>>cmd = " + cmd);
+ Log.d(TAG, "免唤醒 mogoVoiceListener needAuthorize = " + mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE) + " >>>cmd = " + cmd);
mVoiceCmdType = cmd;
if (cmd.equals(ExtensionsModuleConst.CANCLE_SHARE)
|| cmd.equals(ExtensionsModuleConst.CLOSE)) { //取消分享,关闭页面
- if (mIMogoAuthorizeModuleManager.needAuthorize()) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY);
+ if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
} else {
ShareControl.getInstance(mContext).dismissDialog();
}
} else if (cmd.equals(ExtensionsModuleConst.UPLOAD_ROAD_BLOCK)) { //上报拥堵
- if (mIMogoAuthorizeModuleManager.needAuthorize()) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY);
+ if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
} else {
uploadRoadCondition();
}
} else if (cmd.equals(ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK)) { //上报交通检查
- if (mIMogoAuthorizeModuleManager.needAuthorize()) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY);
+ if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
} else {
uploadTrfficCheck();
}
} else if (cmd.equals(ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE)) { //上报封路
- if (mIMogoAuthorizeModuleManager.needAuthorize()) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY);
+ if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
} else {
uploadRoadClosed();
}
@@ -140,8 +142,10 @@ public class EntrancePresenter extends Presenter {
@Override
public void onIntentReceived(String intentStr, Intent intent) {
mVoiceCmdType = intentStr;
+ EntranceFragment.isClickShare = false;
+
String data = intent.getStringExtra("data");
- Log.d(TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>data =" + data + " >>> needAuthorize = " + mIMogoAuthorizeModuleManager.needAuthorize());
+ Log.d(TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>data =" + data + " >>> needAuthorize = " + mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE));
if (intentStr.equals(ExtensionsModuleConst.GO_TO_SHARE)) { //我要分享 --ok
String conditionData = intent.getStringExtra("data");
Log.d(TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>conditionData =" + conditionData);
@@ -152,30 +156,30 @@ public class EntrancePresenter extends Presenter {
mVoiceCmdShareType = typeString;
if (!TextUtils.isEmpty(typeString)) {
if (typeString.equals("封路")) {
- if (mIMogoAuthorizeModuleManager.needAuthorize()) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY);
+ if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
} else {
Log.d(TAG, "mogoIntentListener 封路 -------> ");
uploadRoadClosed();
}
} else if (typeString.equals("油价")) {
- if (mIMogoAuthorizeModuleManager.needAuthorize()) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY);
+ if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
} else {
Log.d(TAG, "mogoIntentListener 油价 -------> ");
shareOilPrice();
}
} else if (typeString.equals("交通检查")) {
- if (mIMogoAuthorizeModuleManager.needAuthorize()) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY);
+ if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
} else {
Log.d(TAG, "mogoIntentListener 交通检查 -------> ");
uploadTrfficCheck();
}
}
} else {
- if (mIMogoAuthorizeModuleManager.needAuthorize()) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY);
+ if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
} else {
ShareControl.getInstance(mContext).showDialog();
Log.d(TAG, "mogoIntentListener 我要分享 ----> ");
@@ -187,30 +191,30 @@ public class EntrancePresenter extends Presenter {
}
} else if (intentStr.equals(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN)) {
//分享路况/上报路况/上报拥堵 唤醒
- if (mIMogoAuthorizeModuleManager.needAuthorize()) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY);
+ if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
} else {
uploadRoadCondition();
Log.d(TAG, "mogoIntentListener 分享路况 唤醒 ----> ");
}
} else if (intentStr.equals(ExtensionsModuleConst.SHARE_DIALOG_CLOSE)) { //关闭分享框 唤醒
- if (mIMogoAuthorizeModuleManager.needAuthorize()) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY);
+ if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
} else {
ShareControl.getInstance(mContext).dismissDialog();
Log.d(TAG, "mogoIntentListener 关闭分享框 唤醒 ----> ");
}
} else if (intentStr.equals(ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE)) {
// 两次未回复关闭对话框
- if (mIMogoAuthorizeModuleManager.needAuthorize()) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY);
+ if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
} else {
ShareControl.getInstance(mContext).dismissDialog();
Logger.d(TAG, "mogoIntentListener 两次未回复关闭对话框");
}
} else if (intentStr.equals(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION)) { //上报路况 免唤醒 --ok
- if (mIMogoAuthorizeModuleManager.needAuthorize()) {
- mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY);
+ if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
+ mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
} else {
uploadRoadCondition();
}
diff --git a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml
index 46c37d2177..2fb0371afd 100644
--- a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml
+++ b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml
@@ -146,7 +146,7 @@
android:layout_height="@dimen/module_ext_operation_panel_vr_height"
android:background="@drawable/module_ext_dw_top_corner_bkg"
android:orientation="vertical"
- android:visibility="visible">
+ android:visibility="gone">
+ package="com.mogo.module.share" >
+
+
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java
index d100a6e95b..4256364c5e 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java
@@ -45,12 +45,12 @@ public class ShareControl implements IShareControl {
boolean isAdasShow = mogoServiceApis.getStatusManagerApi().isADASShow();
Logger.d("ShareControl", "showDialog 判断adas是否展示: " + isAdasShow);
- if (isAdasShow) {
- mogoServiceApis.getAdasControllerApi().closeADAS();
- }
+// if (isAdasShow) {
+// mogoServiceApis.getAdasControllerApi().closeADAS();
+// }
mShareDialog = new LaucherShareDialog(mContext);
- mShareDialog.setCanceledOnTouchOutside(true);
+// mShareDialog.setCanceledOnTouchOutside(true);
mShareDialog.show();
}
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java
index db5b2899af..fa9aa484db 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java
@@ -1,11 +1,14 @@
package com.mogo.module.share.dialog;
-import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
+import android.graphics.PixelFormat;
import android.net.Uri;
-import android.os.Bundle;
+import android.os.Build;
+import android.view.Gravity;
+import android.view.LayoutInflater;
import android.view.View;
+import android.view.WindowManager;
import android.widget.RelativeLayout;
import android.widget.TextView;
@@ -16,6 +19,7 @@ import com.mogo.module.share.R;
import com.mogo.module.share.constant.ShareConstants;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.analytics.IMogoAnalytics;
+import com.mogo.utils.WindowUtils;
import com.mogo.utils.logger.Logger;
import java.util.HashMap;
@@ -25,9 +29,15 @@ import java.util.Map;
/**
* @author lixiaopeng
* @description 通用分享dialog
+ *
+ * 由于和左侧Adas冲突,改成了windowManager方式实现,这种实现方式的问题是,无法监测back键的事件
* @since 2020-01-10
*/
-public class LaucherShareDialog extends Dialog implements View.OnClickListener {
+public class LaucherShareDialog implements View.OnClickListener {
+ private static final String TAG = "LaucherShareDialog";
+
+ private boolean isShown = false;
+
private TextView txtOk;
private RelativeLayout mBlockLayout;
private RelativeLayout mOilPriceLayout;
@@ -36,33 +46,29 @@ public class LaucherShareDialog extends Dialog implements View.OnClickListener {
private Context mContext;
private IMogoAnalytics mAnalytics;
+ private WindowManager windowManager;
+ private WindowManager.LayoutParams layoutParams;
public LaucherShareDialog(@NonNull Context context) {
- super(context, R.style.BottomDialog);
this.mContext = context;
- getWindow().setBackgroundDrawableResource(android.R.color.transparent);
mAnalytics = (IMogoAnalytics) ARouter.getInstance().build(MogoServicePaths.PATH_UTILS_ANALYTICS).navigation(mContext);
-
- }
-
- public LaucherShareDialog(@NonNull Context context, int themeResId) {
- super(context, R.style.BottomDialog);
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- initView();
- initListener();
}
+ private View body;
private void initView() {
- setContentView(R.layout.launcher_dialog_share);
- txtOk = findViewById(R.id.btn_share_title);
- mBlockLayout = findViewById(R.id.btn_block_layout);
- mOilPriceLayout = findViewById(R.id.oil_price_layout);
- mTrafficCheckLayout = findViewById(R.id.traffic_check_layout);
- mRoadClosureLayout = findViewById(R.id.road_closure_layout);
+ Logger.d(TAG, "test-------3");
+ body = LayoutInflater.from(mContext).inflate(R.layout.launcher_dialog_share, null);
+ body.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ dismiss();
+ }
+ });
+ txtOk = body.findViewById(R.id.btn_share_title);
+ mBlockLayout = body.findViewById(R.id.btn_block_layout);
+ mOilPriceLayout = body.findViewById(R.id.oil_price_layout);
+ mTrafficCheckLayout = body.findViewById(R.id.traffic_check_layout);
+ mRoadClosureLayout = body.findViewById(R.id.road_closure_layout);
}
@@ -73,31 +79,34 @@ public class LaucherShareDialog extends Dialog implements View.OnClickListener {
mRoadClosureLayout.setOnClickListener(this);
}
-
@Override
public void onClick(View view) {
int id = view.getId();
+ Logger.d(TAG, "onClick: " + id);
if (id == R.id.btn_block_layout) { //拥堵
traceTanluData("1");
sendShareReceiver("1");
traceTypeData("1");
+ dismiss();
} else if (id == R.id.oil_price_layout) {
traceData("1");
Intent intent = new Intent();
intent.setData(Uri.parse("freshthing://com.zhidao.fresh.things/shareOilPrice"));
mContext.startActivity(intent);
traceTypeData("2");
+ dismiss();
} else if (id == R.id.traffic_check_layout) { //交通检查
traceData("1");
sendShareReceiver("2");
traceTypeData("3");
+ dismiss();
} else if (id == R.id.road_closure_layout) { //封路
traceData("1");
sendShareReceiver("3");
traceTypeData("4");
+ dismiss();
}
- dismiss();
}
/**
@@ -143,4 +152,39 @@ public class LaucherShareDialog extends Dialog implements View.OnClickListener {
}
+ public void show(){
+ Logger.d(TAG,"使用windowManager实现");
+ if (!isShown) {
+ windowManager = (WindowManager) mContext.getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
+ layoutParams = new WindowManager.LayoutParams();
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
+ } else {
+ layoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
+ }
+ layoutParams.format = PixelFormat.TRANSLUCENT;
+ layoutParams.gravity = Gravity.LEFT | Gravity.TOP;
+// mWindowLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
+ // FLAG_LAYOUT_IN_SCREEN:将window放置在整个屏幕之内,无视其他的装饰(比如状态栏); FLAG_NOT_TOUCH_MODAL:不阻塞事件传递到后面的窗口
+ layoutParams.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
+ layoutParams.width = WindowUtils.getScreenWidth(mContext);
+ layoutParams.height = WindowUtils.getScreenHeight(mContext);
+ layoutParams.dimAmount = 0;//后面变暗区域透明...
+ layoutParams.x = 0;
+ layoutParams.y = 0;
+ initView();
+ initListener();
+ windowManager.addView(body, layoutParams);
+ isShown = true;
+ }
+ }
+
+ public void dismiss(){
+ if (isShown && windowManager != null && body != null) {
+ windowManager.removeViewImmediate(body);
+ windowManager = null;
+ isShown = false;
+ }
+ }
+
}
diff --git a/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share.xml b/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share.xml
index e38447d88a..3e9ca3ab44 100644
--- a/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share.xml
+++ b/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share.xml
@@ -1,146 +1,157 @@
-
-
-
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:clickable="true"
+ android:focusable="true"
+ android:background="#88000000">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_width="@dimen/share_module_width"
+ android:layout_height="@dimen/share_module_height"
+ android:clickable="true"
+ android:focusable="true"
+ android:layout_gravity="center"
+ android:background="@drawable/shape_bg_222533_20px">
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file