diff --git a/main-extensions/mogo-module-main-independent/src/main/AndroidManifest.xml b/main-extensions/mogo-module-main-independent/src/main/AndroidManifest.xml index fcfddb2b4a..0d4d401316 100644 --- a/main-extensions/mogo-module-main-independent/src/main/AndroidManifest.xml +++ b/main-extensions/mogo-module-main-independent/src/main/AndroidManifest.xml @@ -29,6 +29,15 @@ + + + + + + \ No newline at end of file diff --git a/main-extensions/mogo-module-main-independent/src/main/java/com/zhidao/mogo/module/main/independent/MainIndependentActivity.java b/main-extensions/mogo-module-main-independent/src/main/java/com/zhidao/mogo/module/main/independent/MainIndependentActivity.java index 52bf70be04..63c9099486 100644 --- a/main-extensions/mogo-module-main-independent/src/main/java/com/zhidao/mogo/module/main/independent/MainIndependentActivity.java +++ b/main-extensions/mogo-module-main-independent/src/main/java/com/zhidao/mogo/module/main/independent/MainIndependentActivity.java @@ -17,6 +17,8 @@ public class MainIndependentActivity extends MainActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); + // 独立app需要在onCreate里面增加处理scheme的情况 + mPresenter.handleSchemeIntent(getIntent()); } @Override 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 9520ef3000..8240544ce2 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 @@ -222,13 +222,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent // } // }); // 原始逻辑 - isClickShare = true; - if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { - mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); - } else { - ShareControl.getInstance( getActivity() ).showDialog(); - traceData( "1" ); - } + showShareDialog(); } ); mDisplayOverview = findViewById( R.id.module_ext_id_display_overview ); @@ -348,6 +342,16 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mNaviInfo.inflate( rootView ); } + public void showShareDialog() { + isClickShare = true; + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); + } else { + mApis.getShareManager().showShareDialog(); + traceData( "1" ); + } + } + private static final String AUTONAVI_STANDARD_BROADCAST_RECV = "AUTONAVI_STANDARD_BROADCAST_RECV"; @NonNull @@ -395,7 +399,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent public void authorizeSuccess() { Log.d( TAG, "authorizeSuccess --------> isClickShare = " + isClickShare ); if ( isClickShare ) { - ShareControl.getInstance( getActivity() ).showDialog(); + mApis.getShareManager().showShareDialog(); traceData( "1" ); } else { mEntrancePresenter.handleNeedAuthorizeCmd(); diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java index 14ec2be9ab..b477536dcf 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java @@ -80,6 +80,12 @@ public class SchemeIntent implements IMogoStatusChangedListener { case "/main/switch2": handleSwitch2Action( target ); break; + case "/main/share": + Logger.d(TAG,"收到打开分享框的scheme,准备打开分享框"); + mApis.getShareManager().showShareDialog(); + break; + default: + break; } 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 5307736cd1..c20c764113 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 @@ -2,10 +2,12 @@ package com.mogo.module.share; import android.content.Context; +import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.module.share.dialog.LaucherShareDialog; import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; +import com.mogo.service.share.IMogoShareManager; import com.mogo.utils.logger.Logger; /** @@ -13,55 +15,27 @@ import com.mogo.utils.logger.Logger; * @description 分享弹框接口 * @since 2020-01-10 */ -public class ShareControl implements IShareControl { +@Route(path = MogoServicePaths.PATH_SHARE) +public class ShareControl implements IMogoShareManager { - private static volatile ShareControl sInstance; private Context mContext; private LaucherShareDialog mShareDialog; - private IMogoServiceApis mogoServiceApis; - - private ShareControl(Context context) { - mContext = context; - mogoServiceApis = - (IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context); - } - - public IMogoServiceApis getMogoServiceApis(){ - return mogoServiceApis; - } - - public static ShareControl getInstance(Context context) { - if (sInstance == null) { - synchronized (ShareControl.class) { - if (sInstance == null) { - sInstance = new ShareControl(context); - } - } - } - return sInstance; - } - - @Override - public void showDialog() { - - boolean isAdasShow = mogoServiceApis.getStatusManagerApi().isADASShow(); - Logger.d("ShareControl", "showDialog 判断adas是否展示: " + isAdasShow); -// if (isAdasShow) { -// mogoServiceApis.getAdasControllerApi().closeADAS(); -// } - + public void showShareDialog() { mShareDialog = new LaucherShareDialog(mContext); -// mShareDialog.setCanceledOnTouchOutside(true); mShareDialog.show(); } @Override - public void dismissDialog() { + public void dismissShareDialog() { if (mShareDialog != null) { mShareDialog.dismiss(); } } + @Override + public void init(Context context) { + mContext = context; + } } 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 056450ac89..519f098dea 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 @@ -66,8 +66,8 @@ public class LaucherShareDialog implements View.OnClickListener { public LaucherShareDialog(@NonNull Context context) { this.mContext = context; - mAnalytics = ShareControl.getInstance(context).getMogoServiceApis().getAnalyticsApi(); mApis = (IMogoServiceApis) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation(context); + mAnalytics = mApis.getAnalyticsApi(); mStatusManager = mApis.getStatusManagerApi(); } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java index 647a236561..73ba95f5a2 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java @@ -21,6 +21,7 @@ import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.module.IMogoSearchManager; import com.mogo.service.module.IMogoSettingManager; import com.mogo.service.network.IMogoNetwork; +import com.mogo.service.share.IMogoShareManager; import com.mogo.service.statusmanager.IMogoMsgCenter; import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.service.strategy.IMogoRefreshStrategyController; @@ -194,4 +195,10 @@ public interface IMogoServiceApis extends IProvider { * @return */ IMogoMarkerService getMarkerService(); + + /** + * 其他模块调用分享框的显示和隐藏 + * @return + */ + IMogoShareManager getShareManager(); } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java index 93986037c7..d511aaf799 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java @@ -170,6 +170,7 @@ public class MogoServicePaths { /** * 顶部1/2屏管理 */ + @Deprecated public static final String PATH_EXTENSIONS_TOP_VIEW_MANAGER = "/topview/api"; /** @@ -177,4 +178,10 @@ public class MogoServicePaths { */ @Deprecated public static final String PATH_MARKER_SERVICE = "/mogomarker/api"; + + /** + * 其他模块调用分享框 + */ + @Deprecated + public static final String PATH_SHARE = "/extensions/share"; } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/share/IMogoShareManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/share/IMogoShareManager.java new file mode 100644 index 0000000000..2ed5841ad8 --- /dev/null +++ b/services/mogo-service-api/src/main/java/com/mogo/service/share/IMogoShareManager.java @@ -0,0 +1,19 @@ +package com.mogo.service.share; + +import com.alibaba.android.arouter.facade.template.IProvider; + +/** + * 分享框管理接口 + * @author tongchenfei + */ +public interface IMogoShareManager extends IProvider { + /** + * 显示分享框 + */ + void showShareDialog(); + + /** + * 隐藏分享框 + */ + void dismissShareDialog(); +} diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java index 534de90589..30f5a47ab1 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java @@ -30,6 +30,7 @@ import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.module.IMogoSearchManager; import com.mogo.service.module.IMogoSettingManager; import com.mogo.service.network.IMogoNetwork; +import com.mogo.service.share.IMogoShareManager; import com.mogo.service.statusmanager.IMogoMsgCenter; import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.service.strategy.IMogoRefreshStrategyController; @@ -171,7 +172,12 @@ public class MogoServiceApis implements IMogoServiceApis { return getApiInstance( IMogoMarkerService.class, MogoServicePaths.PATH_MARKER_SERVICE ); } - private static < T extends IProvider > T getApiInstance( Class< T > clazz, String path ) { + @Override + public IMogoShareManager getShareManager() { + return getApiInstance(IMogoShareManager.class,MogoServicePaths.PATH_SHARE); + } + + private static < T extends IProvider > T getApiInstance(Class< T > clazz, String path ) { T inst = SingletonsHolder.get( clazz ); if ( inst == null ) { synchronized ( sLock ) {