opt back module

This commit is contained in:
wangcongtao
2020-02-26 19:20:18 +08:00
parent 717cf7a246
commit f9e7638f9c
6 changed files with 201 additions and 11 deletions

View File

@@ -0,0 +1,33 @@
package com.mogo.module.back;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.mogo.utils.logger.Logger;
/**
* @author congtaowang
* @since 2020-02-26
* <p>
* 描述
*/
public class Back2LauncherFragment extends Fragment {
private static final String TAG = "Back2LauncherFragment";
@Override
public void onCreate( @Nullable Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
BackToMainHomeManager.addMainHomeView();
Logger.d( TAG, "addMainHomeView" );
}
@Override
public void onDestroy() {
super.onDestroy();
BackToMainHomeManager.removeMainHomeView();
Logger.d( TAG, "removeMainHomeView" );
}
}

View File

@@ -0,0 +1,14 @@
package com.mogo.module.back;
/**
* @author congtaowang
* @since 2020-02-26
* <p>
* 描述
*/
public class BackToLauncherConst {
public static final String MODULE_NAME ="MOGO_BACK_2_LAUNCHER";
public static final String MODULE_PATH = "/back2launcher/ui";
}

View File

@@ -0,0 +1,151 @@
package com.mogo.module.back;
import android.app.Activity;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
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.service.module.IMogoModuleLifecycle;
import com.mogo.service.module.IMogoModuleProvider;
import com.mogo.service.module.ModuleType;
import com.mogo.utils.logger.Logger;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
/**
* @author congtaowang
* @since 2020-02-26
* <p>
* 描述
*/
@Route( path = BackToLauncherConst.MODULE_PATH )
public class BackToLauncherModuleProvider implements IMogoModuleProvider {
private static final String TAG = "BackToLauncherModuleProvider";
@Override
public Fragment createFragment( Context context, Bundle data ) {
return null;
}
@Override
public View createView( Context context ) {
return null;
}
@NonNull
@Override
public String getModuleName() {
return BackToLauncherConst.MODULE_NAME;
}
@Override
public IMogoModuleLifecycle getCardLifecycle() {
return null;
}
@Override
public IMogoMapListener getMapListener() {
return null;
}
@Override
public int getType() {
return ModuleType.TYPE_SERVICE;
}
@Override
public IMogoNaviListener getNaviListener() {
return null;
}
@Override
public IMogoLocationListener getLocationListener() {
return null;
}
@Override
public IMogoMarkerClickListener getMarkerClickListener() {
return null;
}
@Override
public String getAppPackage() {
return null;
}
@Override
public String getAppName() {
return null;
}
@Override
public void init( Context context ) {
BackToMainHomeManager.addMainHomeView();
// final Activity activity = getTopActivity(context.getPackageName());
// if ( activity instanceof FragmentActivity ) {
// Logger.d( TAG, "init." );
// FragmentManager fragmentManager = ( ( FragmentActivity ) activity ).getSupportFragmentManager();
// fragmentManager.beginTransaction()
// .add( new Back2LauncherFragment(), BackToLauncherConst.MODULE_NAME )
// .commitAllowingStateLoss();
// fragmentManager.executePendingTransactions();
// }
}
// /**
// * 获取当前运行的activity
// */
// private Activity getTopActivity(String process) {
// Log.i("activity", "[getTopActivity]");
// try {
// Class activityThreadClass = Class.forName("android.app.ActivityThread");
// Object activityThread = activityThreadClass.getMethod("currentActivityThread").invoke(null);
// Field activitiesField = activityThreadClass.getDeclaredField("mActivities");
// activitiesField.setAccessible(true);
// //16~18 HashMap
// //19~27 ArrayMap
// Map<Object, Object> activities;
// if ( Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
// activities = ( HashMap<Object, Object> ) activitiesField.get(activityThread);
// } else {
// activities = ( ArrayMap<Object, Object> ) activitiesField.get(activityThread);
// }
// if (activities.size() < 1) {
// return null;
// }
// for (Object activityRecord : activities.values()) {
// Class activityRecordClass = activityRecord.getClass();
// Field pausedField = activityRecordClass.getDeclaredField("paused");
// pausedField.setAccessible(true);
// if (!pausedField.getBoolean(activityRecord)) {
// Field activityField = activityRecordClass.getDeclaredField("activity");
// activityField.setAccessible(true);
// Activity activity = (Activity) activityField.get(activityRecord);
// if ( TextUtils.equals( process, activity.getPackageName() ) ) {
// return activity;
// }
// }
// }
// } catch (Exception e) {
// e.printStackTrace();
// }
// return null;
// }
}