package com.donut.wxf1a06dafa3350688 import android.app.Application import android.content.Intent import androidx.lifecycle.Observer import com.donut.plugin.activity.AliPayActivity import com.donut.plugin.activity.HuaWeiActivity import com.donut.plugin.activity.LenovoActivity import com.donut.plugin.bean.DataBean import com.donut.plugin.channelsdk.lenovo.LenovoSDK import com.donut.plugin.interfaces.AliPayListener import com.donut.plugin.util.* import com.donut.plugin.util.LiveEventBusKeys.ALI_PAY_CALLBACK import com.donut.plugin.util.LiveEventBusKeys.HUAWEI_LOGIN_CALLBACK import com.jeremyliao.liveeventbus.LiveEventBus import com.tencent.luggage.wxa.SaaA.plugin.AsyncJsApi import com.tencent.luggage.wxa.SaaA.plugin.NativePluginInterface import com.tencent.luggage.wxa.SaaA.plugin.SyncJsApi import org.json.JSONObject import java.lang.reflect.Method /** * * * //必须传入第一个object参数,callback必须带参数! * */ class TestNativePlugin : NativePluginInterface { private lateinit var mUtil: EfunboxUtil; var mLenovoLEBCallBack: Observer? = null; var mAliPayLEBCallBack: Observer? = null; var mHuaWeiLEBCallBack: Observer? = null; override fun getPluginID(): String { return BuildConfig.PLUGIN_ID } /** * 初始化application * */ @AsyncJsApi(methodName = "initPlugin") fun initPluginMethod(data: JSONObject?, callback: (data: Any) -> Unit) { try { val clazz = Class.forName("android.app.ActivityThread") val method: Method = clazz.getMethod("currentApplication") BaseConsts.mBaseApplication = method.invoke(null) as Application; mUtil = EfunboxUtil() mUtil.reflectActivity(); DeviceUuidFactory(BaseConsts.mBaseApplication); callback("success") } catch (e: Exception) { callback("fail") e.printStackTrace() } } /** * 获取deviceUUID * */ @SyncJsApi(methodName = "getDeviceUuid") fun getDeviceUUID(data: JSONObject?): String { return DeviceUuidFactory.getUuid(); } /** * 联想sdk方法 *初始化插件-联想渠道 * */ @AsyncJsApi(methodName = "lenovoInitSDK") fun lenovoInit(data: JSONObject?, callback: (data: Any) -> Unit) { Logger.e("初始化插件-联想渠道") LenovoSDK.initSDK(BaseConsts.mTopActivity, object : LenovoSDK.LoginCallBack { override fun loginSuccess(data: String?) { callback(data!!) } override fun loginFail(data: String?) { callback(data!!) } }) } /** * 联想登陆 * */ @AsyncJsApi(methodName = "lenovoLogin") fun lenovoLogin(data: JSONObject?, callback: (data: Any) -> Unit) { if (mLenovoLEBCallBack == null) { Logger.e("联想监听是空的,初始化") mLenovoLEBCallBack = Observer { t: DataBean? -> Logger.e("联想监听回调:${t!!.toJSON()}") callback(t.toJSON()!!) //清空3个监听 mLenovoLEBCallBack = clearLEBCallBackByKey(LiveEventBusKeys.LENOVO_LOGIN_CALLBACK, mLenovoLEBCallBack!!) }; LiveEventBus .get(LiveEventBusKeys.LENOVO_LOGIN_CALLBACK, DataBean::class.java) .observeForever(mLenovoLEBCallBack!!) } else { Logger.e("没有初始化联想leb监听") } BaseConsts.mTopActivity.startActivity(Intent(BaseConsts.mTopActivity, LenovoActivity::class.java)) } /** * 联想退出登陆 * */ @AsyncJsApi(methodName = "lenovoLogout") fun lenovoLogout(data: JSONObject?, callback: (data: Any) -> Unit) { LenovoSDK.loginOut(BaseConsts.mTopActivity, object : LenovoSDK.LoginCallBack { override fun loginSuccess(data: String?) { callback("success") } override fun loginFail(data: String?) { callback("fail") } }) } /** * 支付宝支付 * */ @AsyncJsApi(methodName = "aliPay") fun aliPay(data: JSONObject?, callback: (data: Any) -> Unit) { Logger.e("调用插件支付宝支付方法!") if (mAliPayLEBCallBack == null) { Logger.e("重置支付宝支付方法的callback") mAliPayLEBCallBack = Observer { t: DataBean? -> Logger.e("支付宝支付返回:${t!!.toJSON()}") callback(t.toJSON()!!) //清空监听 mAliPayLEBCallBack = clearLEBCallBackByKey(ALI_PAY_CALLBACK, mAliPayLEBCallBack!!) } //注册监听 LiveEventBus .get(ALI_PAY_CALLBACK, DataBean::class.java) .observeForever(mAliPayLEBCallBack!!) } Logger.e("调用支付宝支付方法") var intent = Intent(BaseConsts.mTopActivity, AliPayActivity::class.java) intent.putExtra("orderInfo", data.toString()) BaseConsts.mTopActivity.startActivity(intent) } @AsyncJsApi(methodName = "HuaWeiLogin") fun huaweiLogin(data: JSONObject?, callback: (data: Any) -> Unit) { if (mHuaWeiLEBCallBack == null) { Logger.e("初始化华为LEBcallback") mHuaWeiLEBCallBack = Observer { t: DataBean? -> Logger.e("华为监听返回:${t!!.toJSON()}") callback(t.toJSON()); //移除LEB监听和指控 mHuaWeiLEBCallBack = clearLEBCallBackByKey(HUAWEI_LOGIN_CALLBACK, mHuaWeiLEBCallBack!!) } //注册LEBCallBack监听 LiveEventBus .get(HUAWEI_LOGIN_CALLBACK, DataBean::class.java) .observeForever(mHuaWeiLEBCallBack!!) } var intent = Intent(BaseConsts.mTopActivity, HuaWeiActivity::class.java) BaseConsts.mTopActivity.startActivity(intent) } //根据key移除leb回调,并且指向空 private fun clearLEBCallBackByKey( key: String, observer: Observer ): Observer? { LiveEventBus .get(key, DataBean::class.java) .removeObserver(observer) return null; } }