分裂flutter_boost;flutter channel增加网络参数获取

This commit is contained in:
zu
2021-03-24 22:32:21 +08:00
parent 7ba20fa48c
commit f966a19d7a
5 changed files with 230 additions and 172 deletions

View File

@@ -5,7 +5,6 @@ import android.annotation.TargetApi;
import android.app.ActivityManager;
import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.graphics.Color;
@@ -25,8 +24,6 @@ import com.bumptech.glide.request.target.ViewTarget;
import com.coorchice.library.utils.LogUtils;
import com.huawei.hms.support.common.ActivityMgr;
import com.idlefish.flutterboost.FlutterBoost;
import com.idlefish.flutterboost.FlutterBoostDelegate;
import com.idlefish.flutterboost.containers.FlutterBoostActivity;
import com.ishumei.smantifraud.SmAntiFraud;
import com.llew.huawei.verifier.LoadedApkHuaWei;
import com.microquation.linkedme.android.LinkedME;
@@ -62,11 +59,11 @@ import com.yizhuan.erban.MiddleActivity;
import com.yizhuan.erban.NimMiddleActivity;
import com.yizhuan.erban.R;
import com.yizhuan.erban.flutter.ChannelConstants;
import com.yizhuan.erban.flutter.RouterConstants;
import com.yizhuan.erban.flutter.XplanFlutterBoostCallback;
import com.yizhuan.erban.flutter.XplanFlutterBoostDelegate;
import com.yizhuan.erban.module_hall.HallDataManager;
import com.yizhuan.erban.radish.wallet.RadishWalletManager;
import com.yizhuan.erban.reciever.ConnectiveChangedReceiver;
import com.yizhuan.erban.ui.pay.ChargeActivity;
import com.yizhuan.erban.utils.PushMessageHandler;
import com.yizhuan.xchat_android_constants.XChatConstants;
import com.yizhuan.xchat_android_core.Constants;
@@ -110,11 +107,9 @@ import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import io.flutter.embedding.android.FlutterActivityLaunchConfigs;
import io.flutter.plugin.common.MethodChannel;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.plugins.RxJavaPlugins;
@@ -147,9 +142,6 @@ public class XChatApplication extends Application {
private static XChatApplication instance;
private RefWatcher mRefWatcher;
private MethodChannel mMethodChannel;
private static String oaid;
private static boolean isSupportOaid=false;
private static int errorCode;
@@ -262,43 +254,7 @@ public class XChatApplication extends Application {
}
dealHuaWeiCrash();
FlutterBoost.instance().setup(this, new FlutterBoostDelegate() {
@Override
public void pushNativeRoute(String pageName, HashMap<String, String> arguments) {
if (pageName == null) {
return;
}
if (pageName.equals(RouterConstants.NATIVE_PAGE_CHARGE)) {
ChargeActivity.start(FlutterBoost.instance().currentActivity());
}
}
@Override
public void pushFlutterRoute(String pageName, String uniqueId, HashMap<String, String> arguments) {
Intent intent = new FlutterBoostActivity.CachedEngineIntentBuilder(FlutterBoostActivity.class, FlutterBoost.ENGINE_ID)
.backgroundMode(FlutterActivityLaunchConfigs.BackgroundMode.opaque)
.destroyEngineWithActivity(false)
.url(pageName)
.urlParams(arguments)
.build(FlutterBoost.instance().currentActivity());
FlutterBoost.instance().currentActivity().startActivity(intent);
}
}, engine -> {
mMethodChannel = new MethodChannel(engine.getDartExecutor(), ChannelConstants.CHANNEL_NAME);
mMethodChannel.setMethodCallHandler(((call, result) -> {
if (call.method.equals(ChannelConstants.METHOD_NAME_GETDIAMOND)) {
PayModel.get().getWalletInfo()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(walletInfo -> {
result.success(walletInfo.diamonds);
});
} else {
result.notImplemented();
}
}));
});
FlutterBoost.instance().setup(this, new XplanFlutterBoostDelegate(), new XplanFlutterBoostCallback());
LogUtils.d("init time = " +(System.currentTimeMillis() - startTime) +"ms");
}

View File

@@ -4,4 +4,6 @@ public class ChannelConstants {
public static final String CHANNEL_NAME = "com.mango.flutter.xplan";
public static final String METHOD_NAME_GETDIAMOND = "getDiamond";
public static final String METHOD_NAME_GETDEVICEINFO = "getDeviceInfo";
public static final String METHOD_NAME_GETAUTH = "getAuth";
}

View File

@@ -0,0 +1,65 @@
package com.yizhuan.erban.flutter;
import android.content.Context;
import android.os.Build;
import android.util.ArrayMap;
import com.idlefish.flutterboost.FlutterBoost;
import com.yizhuan.erban.application.XChatApplication;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.pay.PayModel;
import com.yizhuan.xchat_android_library.utils.AppMetaDataUtil;
import com.yizhuan.xchat_android_library.utils.AppUtils;
import com.yizhuan.xchat_android_library.utils.DeviceUuidFactory;
import com.yizhuan.xchat_android_library.utils.SystemUtils;
import com.yizhuan.xchat_android_library.utils.VersionUtil;
import java.util.HashMap;
import java.util.Map;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugin.common.MethodChannel;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
public class XplanFlutterBoostCallback implements FlutterBoost.Callback {
private MethodChannel mMethodChannel;
@Override
public void onStart(FlutterEngine engine) {
Context context = XChatApplication.instance();
mMethodChannel = new MethodChannel(engine.getDartExecutor(), ChannelConstants.CHANNEL_NAME);
mMethodChannel.setMethodCallHandler(((call, result) -> {
if (call.method.equals(ChannelConstants.METHOD_NAME_GETDIAMOND)) {
PayModel.get().getWalletInfo()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(walletInfo -> {
result.success(walletInfo.diamonds);
});
} else if (call.method.equals(ChannelConstants.METHOD_NAME_GETDEVICEINFO)) {
Map<String, String> httpParams = new HashMap<>();
httpParams.put("os", "android");
httpParams.put("osVersion", Build.VERSION.RELEASE);
httpParams.put("app", "yinyou");
httpParams.put("ispType", String.valueOf(SystemUtils.getIspType(context)));
httpParams.put("netType", String.valueOf(SystemUtils.getNetworkType(context)));
httpParams.put("model", SystemUtils.getPhoneModel());
httpParams.put("appVersion", VersionUtil.getLocalName(context));
httpParams.put("appVersionCode", String.valueOf(AppUtils.getVersionCode(context)));
httpParams.put("deviceId", DeviceUuidFactory.getDeviceId(context));
httpParams.put("channel", AppMetaDataUtil.getChannelID());
result.success(httpParams);
} else if (call.method.equals(ChannelConstants.METHOD_NAME_GETAUTH)) {
Map<String, String> headerParams = new HashMap<>();
headerParams.put("pub_uid", String.valueOf(AuthModel.get().getCurrentUid()));
headerParams.put("pub_ticket", AuthModel.get().getTicket());
result.success(headerParams);
} else {
result.notImplemented();
}
}));
}
}

View File

@@ -0,0 +1,35 @@
package com.yizhuan.erban.flutter;
import android.content.Intent;
import com.idlefish.flutterboost.FlutterBoost;
import com.idlefish.flutterboost.FlutterBoostDelegate;
import com.idlefish.flutterboost.containers.FlutterBoostActivity;
import com.yizhuan.erban.ui.pay.ChargeActivity;
import java.util.HashMap;
import io.flutter.embedding.android.FlutterActivityLaunchConfigs;
public class XplanFlutterBoostDelegate implements FlutterBoostDelegate {
@Override
public void pushNativeRoute(String pageName, HashMap<String, String> arguments) {
if (pageName == null) {
return;
}
if (pageName.equals(RouterConstants.NATIVE_PAGE_CHARGE)) {
ChargeActivity.start(FlutterBoost.instance().currentActivity());
}
}
@Override
public void pushFlutterRoute(String pageName, String uniqueId, HashMap<String, String> arguments) {
Intent intent = new FlutterBoostActivity.CachedEngineIntentBuilder(FlutterBoostActivity.class, FlutterBoost.ENGINE_ID)
.backgroundMode(FlutterActivityLaunchConfigs.BackgroundMode.opaque)
.destroyEngineWithActivity(false)
.url(pageName)
.urlParams(arguments)
.build(FlutterBoost.instance().currentActivity());
FlutterBoost.instance().currentActivity().startActivity(intent);
}
}