123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366 |
- package org.cocos2dx.javascript.presenter;
- import android.content.pm.ApplicationInfo;
- import android.content.pm.PackageManager;
- import android.graphics.Color;
- import android.os.Handler;
- import android.os.Message;
- import android.os.Process;
- import android.support.annotation.NonNull;
- import android.text.TextUtils;
- import android.view.KeyEvent;
- import android.webkit.JavascriptInterface;
- import android.widget.Toast;
- import com.alipay.sdk.app.PayTask;
- import com.edufound.mobile.wxapi.WXPayEntryActivity;
- import com.google.gson.Gson;
- import com.mobile.auth.gatewayauth.PhoneNumberAuthHelper;
- import com.mobile.auth.gatewayauth.TokenResultListener;
- import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram;
- import com.tencent.mm.opensdk.modelpay.PayReq;
- import com.tencent.mm.opensdk.openapi.IWXAPI;
- import com.tencent.mm.opensdk.openapi.WXAPIFactory;
- import com.umeng.commonsdk.UMConfigure;
- import org.cocos2dx.javascript.AppActivity;
- import org.cocos2dx.javascript.bean.AliPayResult;
- import org.cocos2dx.javascript.util.Consts;
- import org.cocos2dx.javascript.util.DeviceUtil;
- import org.cocos2dx.javascript.util.DeviceUuidFactory;
- import org.cocos2dx.javascript.util.Logger;
- import org.cocos2dx.javascript.util.PackageUtil;
- import org.cocos2dx.lib.Cocos2dxJavascriptJavaBridge;
- import org.json.JSONException;
- import org.json.JSONObject;
- import java.util.HashMap;
- import java.util.Map;
- import static org.cocos2dx.lib.Cocos2dxHelper.runOnGLThread;
- public class MainPresenter {
- private static AppActivity mActivity;
- private static DeviceUtil mDeviceUtil;
- private static PackageUtil mPackageUtil;
- private static Gson mGson;
- private static boolean autoLogin;
- PhoneNumberAuthHelper mPhoneNumberAuthHelper;
- private static String loginToken;
- //微信api
- private static IWXAPI WX_API;
- //微信appid
- public static String WX_APPID = "wx51acc19c8f7a0f6f";
- public static String WX_SECRET = "e830d45f497025041269ef6221140c3d";
- //channel
- public static String mChannelCode;
- public MainPresenter(AppActivity activity) {
- mActivity = activity;
- mGson = new Gson();
- mDeviceUtil = new DeviceUtil();
- mPackageUtil = new PackageUtil(activity);
- new DeviceUuidFactory(Consts.mApplicatonContext);
- mPhoneNumberAuthHelper = PhoneNumberAuthHelper.getInstance(mActivity, mTokenResultListener);
- mPhoneNumberAuthHelper.setAuthSDKInfo("BzFbe8Ud13a0fixI18bD2CRzO5U7iz4Xf7hS5aiftwGJLOBypQraiKdFd5IHgK9wTYW9Plr6+m8pH3cHqSjCOImr8HXf3NYTUCOyePsoUaKrX9qQGIbSZ7KvVMoyUY0FIUsA4hXiv873ZS6uIdMg5aU2Xx9hh+y0bAbsl0PnXQOShlZ/sdyRj8JiQibEel6LlvwFiy5f3l3ML3ojVvCNVhe6aH4f/Plx5hBcRRIf5Bv3oAY6FY6n6pNwNmCLUDRiy2A3bWp2gH6N6uTTaOZi308ylelFPZ17");
- mPhoneNumberAuthHelper.checkEnvAvailable(2);
- WX_API = WXAPIFactory.createWXAPI(Consts.mApplicatonContext, WX_APPID);
- WX_API.registerApp(WX_APPID);
- // mPhoneNumberAuthHelper.getVerifyToken(5000);
- // handler.sendEmptyMessageDelayed(1, 5000);
- }
- Handler handler = new Handler(new Handler.Callback() {
- @Override
- public boolean handleMessage(@NonNull Message message) {
- switch (message.what) {
- case 1:
- mPhoneNumberAuthHelper.getLoginToken(mActivity, 5000);
- break;
- }
- return false;
- }
- });
- public static String getVersionCode() {
- return mDeviceUtil.getVersionCode(mActivity);
- }
- public static void showToast(final String message) {
- mActivity.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- Toast.makeText(mActivity, message, Toast.LENGTH_SHORT).show();
- }
- });
- }
- public static String getSystemAppsJson() {
- return mGson.toJson(mPackageUtil.getSystemAppList()).toString();
- }
- public static String getOtherAppsJson() {
- return mGson.toJson(mPackageUtil.getOtherAppList()).toString();
- }
- public static void hideGameScene() {
- mActivity.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- // mActivity.getGLSurfaceView().setVisibility(View.GONE);
- mActivity.getGLSurfaceView().setZOrderOnTop(true);
- // mActivity.getGLSurfaceView().setBackgroundColor(Color.TRANSPARENT);
- }
- });
- }
- public static void hideSplashImage() {
- mActivity.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- mActivity.removeSplashImage();
- }
- });
- }
- public static void exitApp() {
- mActivity.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- mActivity.finish();
- android.os.Process.killProcess(Process.myPid());
- }
- });
- }
- //返回一键登录初始化成功还是失败
- public static String getAutoLoginSuccess() {
- Logger.e("autoLogin:" + autoLogin);
- return String.valueOf(autoLogin);
- }
- //返回deviceCode
- public static String getLoginToken() {
- Logger.e("getLoginToken:" + loginToken);
- return loginToken;
- }
- //返回deviceCode
- public static String getDeviceCode() {
- Logger.e("调用getDeviceCode:" + DeviceUuidFactory.getUuid().toString());
- return DeviceUuidFactory.getUuid().toString();
- }
- public static void WeChatPay(String json) {
- if (!WX_API.isWXAppInstalled()) {
- Toast.makeText(mActivity, "请安装微信", Toast.LENGTH_SHORT).show();
- return;
- }
- Message msg = new Message();
- msg.obj = json;
- msg.what = 0xffbcd14;
- resultHandler.sendMessageDelayed(msg, 0);
- }
- public static void ALIPay(final String orderInfo) {
- Runnable payRunnable = new Runnable() {
- @Override
- public void run() {
- PayTask alipay = new PayTask(mActivity);
- Map<String, String> result = alipay.payV2(orderInfo, true);
- Message msg = new Message();
- msg.what = 0xffbcd15;
- msg.obj = result;
- resultHandler.sendMessage(msg);
- }
- };
- Thread payThread = new Thread(payRunnable);
- payThread.start();
- }
- @JavascriptInterface
- public void toMiniProgram(String programId, String path) {
- if (!WX_API.isWXAppInstalled()) {
- Toast.makeText(mActivity, "请安装微信", Toast.LENGTH_SHORT).show();
- return;
- }
- WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
- req.userName = programId; // 填小程序原始id
- req.path = path; //拉起小程序页面的可带参路径,不填默认拉起小程序首页
- req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;// 可选打开 开发版,体验版和正式版
- WX_API.sendReq(req);
- }
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- switch (keyCode) {
- case KeyEvent.KEYCODE_BACK:
- case KeyEvent.KEYCODE_ESCAPE:
- mActivity.runOnGLThread(new Runnable() {
- @Override
- public void run() {
- Cocos2dxJavascriptJavaBridge.evalString("PUBLIC.keyBack()");
- }
- });
- return true;
- }
- return false;
- }
- TokenResultListener mTokenResultListener = new TokenResultListener() {
- @Override
- public void onTokenSuccess(String json) {
- try {
- JSONObject object = new JSONObject(json);
- String code = object.getString("code");
- autoLogin = true;
- loginToken = object.getString("token");
- } catch (JSONException e) {
- e.printStackTrace();
- }
- }
- @Override
- public void onTokenFailed(String json) {
- try {
- JSONObject object = new JSONObject(json);
- int code = Integer.valueOf(object.getString("code"));
- switch (code) {
- case 700000:
- case 700001:
- case 700002:
- case 700003:
- case 700004:
- break;
- default:
- autoLogin = false;
- break;
- }
- // Toast.makeText(mActivity, "errorCode:" + object.getString("code") + "--errorMsg:" + object.getString("msg"), Toast.LENGTH_LONG).show();
- } catch (JSONException e) {
- e.printStackTrace();
- }
- }
- };
- public static Handler resultHandler = new Handler(new Handler.Callback() {
- @Override
- public boolean handleMessage(Message msg) {
- switch (msg.what) {
- case 0xffbcd13:
- //微信回参回调
- WXPayEntryActivity.payBack bean = (WXPayEntryActivity.payBack) msg.obj;
- Map<String, String> map = new HashMap<>();
- map.put("errorCode", bean.errorCode + "");
- map.put("errStr", bean.errStr);
- map.put("transaction", bean.transaction);
- map.put("openId", bean.openId);
- final String wechatCallBackJson = mGson.toJson(map);
- mActivity.runOnGLThread(new Runnable() {
- @Override
- public void run() {
- Cocos2dxJavascriptJavaBridge.evalString("PUBLIC.WeChatPayCallBack('" + wechatCallBackJson + "')");
- }
- });
- break;
- case 0xffbcd14:
- //微信支付
- try {
- String jsonmessage = msg.obj.toString();
- if (jsonmessage != null && jsonmessage.length() > 0) {
- JSONObject json = new JSONObject(jsonmessage);
- if (null != json) {
- PayReq req = new PayReq();
- req.appId = json.getString("appid");
- req.partnerId = json.getString("partnerid");
- req.prepayId = json.getString("prepayid");
- req.nonceStr = json.getString("noncestr");
- req.timeStamp = json.getString("timestamp");
- req.packageValue = json.getString("package");
- req.sign = json.getString("sign");
- WX_API.sendReq(req);
- } else {
- Logger.e("返回错误" + json.getString("retmsg"));
- }
- } else {
- Logger.e("服务器请求错误");
- }
- } catch (Exception e) {
- Logger.e("异常:" + e.getMessage());
- }
- break;
- case 0xffbcd15:
- //支付宝支付
- AliPayResult payResult = new AliPayResult((Map<String, String>) msg.obj);
- final String resultInfo = payResult.getResult();// 同步返回需要验证的信息
- final String resultStatus = payResult.getResultStatus();
- Logger.e("resultInfo:" + resultInfo);
- Logger.e("resultStatus:" + resultStatus);
- // if (resultStatus.equals("4000")) {
- // Toast.makeText(mActivity, "未找到支付宝客户端", Toast.LENGTH_SHORT).show();
- // } else {
- mActivity.runOnGLThread(new Runnable() {
- @Override
- public void run() {
- Cocos2dxJavascriptJavaBridge.evalString("PUBLIC.AliPayCallback('" + resultInfo + "','" + resultStatus + "')");
- }
- });
- // }
- break;
- }
- return false;
- }
- });
- /*
- * 设置整体的window背景颜色(16进制)
- * */
- public static void setWindowFrameColor(final String color) {
- Logger.e("设置颜色:" + color);
- mActivity.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- mActivity.getWindowFrame().setBackgroundColor(Color.parseColor(color));
- }
- });
- }
- public static String getChannelName() {
- if (mChannelCode != null || !mChannelCode.equals("")) {
- return mChannelCode;
- } else {
- try {
- PackageManager packageManager = Consts.mApplicatonContext.getPackageManager();
- if (packageManager != null) {
- //注意此处为ApplicationInfo 而不是 ActivityInfo,因为友盟设置的meta-data是在application标签中,而不是某activity标签中,所以用ApplicationInfo
- ApplicationInfo applicationInfo = packageManager.
- getApplicationInfo(Consts.mApplicatonContext.getPackageName(), PackageManager.GET_META_DATA);
- if (applicationInfo != null) {
- if (applicationInfo.metaData != null) {
- mChannelCode = String.valueOf(applicationInfo.metaData.get("UMENG_CHANNEL"));
- }
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return mChannelCode;
- }
- }
|