1. 添加打开分享框的scheme

2. 改变分享框显示触发实现方式,改用IProvider实现
This commit is contained in:
tongchenfei
2020-06-06 18:05:40 +08:00
parent 62728c227e
commit 30847d81bf
10 changed files with 80 additions and 46 deletions

View File

@@ -29,6 +29,15 @@
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
<intent-filter>
<data
android:host="launcher"
android:path="/main/share"
android:scheme="mogo" />
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
</application>
</manifest>

View File

@@ -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

View File

@@ -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();

View File

@@ -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;
}

View File

@@ -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;
}
}

View File

@@ -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();
}

View File

@@ -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();
}

View File

@@ -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";
}

View File

@@ -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();
}

View File

@@ -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 ) {