| package com.secondworld.universalsdk; | 
|   | 
| import android.Manifest; | 
| import android.app.Activity; | 
| import android.app.AlertDialog; | 
| import android.content.ClipData; | 
| import android.content.ClipboardManager; | 
| import android.content.Context; | 
| import android.content.DialogInterface; | 
| import android.content.Intent; | 
| import android.content.pm.PackageManager; | 
| import android.content.res.Configuration; | 
| import android.net.Uri; | 
| import android.os.Build; | 
| import android.os.Bundle; | 
| import android.os.Environment; | 
| import android.provider.Settings; | 
| import android.support.v4.app.ActivityCompat; | 
| import android.support.v4.content.ContextCompat; | 
| import android.support.v4.content.FileProvider; | 
| import android.text.method.QwertyKeyListener; | 
| import android.util.Log; | 
| import android.widget.Toast; | 
|   | 
| import com.quicksdk.QuickSDK; | 
| import com.quicksdk.Sdk; | 
| import com.quicksdk.User; | 
| import com.quicksdk.entity.GameRoleInfo; | 
| import com.quicksdk.entity.OrderInfo; | 
| import com.quicksdk.Payment; | 
| import com.secondworld.univeralsdk.R; | 
| import com.unity3d.player.UnityPlayer; | 
|   | 
| import org.json.JSONException; | 
| import org.json.JSONObject; | 
|   | 
| import java.io.File; | 
| import java.io.UnsupportedEncodingException; | 
| import java.net.URLEncoder; | 
| import java.util.HashMap; | 
| import java.util.Map; | 
|   | 
| import cn.jpush.android.api.JPushInterface; | 
| import cn.jpush.android.data.JPushLocalNotification; | 
|   | 
| import android.text.TextUtils; | 
| import com.kwai.monitor.log.TurboAgent; | 
| import com.kwai.monitor.log.TurboConfig; | 
|   | 
|   | 
| public class H2EngineSDK | 
| { | 
|     private static final String TAG = "H2EngineSDK"; | 
|     private static String APP_ID = ""; | 
|     private static boolean PushEnable = false; | 
|   | 
|     public static void HandleUnityMessage(String json) | 
|     { | 
|         LogUtil.i(TAG, "收到Unity发来的信息: " + json); | 
|         Activity _activity = UnityPlayer.currentActivity; | 
|         try | 
|         { | 
|             JSONObject _json = new JSONObject(json); | 
|             int _code = _json.getInt("code"); | 
|   | 
|             switch (_code) | 
|             { | 
|                 case CodeU2A.Init: | 
|                     APP_ID = _json.getString("appID"); | 
|                     init(_activity); | 
|                     ActiveTurbo(_activity); | 
|                     break; | 
|                 case CodeU2A.CopyOneAsset: | 
|                     FileUtil.copy(_activity, _json.getString("fileName")); | 
|                     break; | 
|                 case CodeU2A.AssetCopy: | 
|                     FileUtil.copyAssets(_activity); | 
|                     break; | 
|                 case CodeU2A.BatteryListenStart: | 
|                     BatteryUtil.getInstance().start(_activity); | 
|                     break; | 
|                 case CodeU2A.BatteryListenStop: | 
|                     BatteryUtil.getInstance().stop(_activity); | 
|                     break; | 
|                 case CodeU2A.UniqueID: | 
|                     break; | 
|                 case CodeU2A.CopyContent: | 
|                     CopyContent(_activity, _json.getString("content")); | 
|                     break; | 
|                 case CodeU2A.OpenWebView: | 
|                     WebViewUtil.OpenWebView(_activity, _json.getString("url")); | 
|                     break; | 
|                 case CodeU2A.RestartApp: | 
|                     RestartApp(_activity); | 
|                     break; | 
|                 case CodeU2A.InstallAPK: | 
|                     InstallApp(_activity, _json.getString("path")); | 
|                     break; | 
|                 case CodeU2A.ExteneralStorage: | 
|                     GetExternalStorage(); | 
|                     break; | 
|                 case CodeU2A.RequestPermission: | 
|                     break; | 
|                 case CodeU2A.RequestManifestPermissions: | 
|                     break; | 
|                 case CodeU2A.FreePlatformInit: | 
|                     break; | 
|                 case CodeU2A.FreePlatformLogin: | 
|                     //QuickPlatformUtil.getInstance().login(_activity); | 
|                     LoginEx(_activity); | 
|                     break; | 
|                 case CodeU2A.FreePlatformSwitchAccount: | 
|                     break; | 
|                 case CodeU2A.FreePlatformLogout: | 
|                     //QuickPlatformUtil.getInstance().logout(_activity); | 
|                     LogoutEx(_activity); | 
|                     break; | 
|                 case CodeU2A.FreePlatformPay: | 
|   | 
|                     JSONObject _extraData = new JSONObject(); | 
|                     String _appid = com.quicksdk.Extend.getInstance().getExtrasConfig("zfappid"); | 
|                     if (_appid == "") | 
|                     { | 
|                         //没有打包的自定义参数则取配置表 | 
|                         _appid = APP_ID; | 
|                     } | 
|                     _extraData.put("appid", _appid); | 
|                     _extraData.put("cpinfo", _json.getString("cpInfo")); | 
|                     _extraData.put("cporderid", _json.getString("orderId")); | 
|                     _extraData.put("money", _json.getDouble("mount")); | 
|                     try | 
|                     { | 
| //                        YJPlatformUtil.getInstance().payExtend(_activity, | 
| //                                                         _json.getString("title"), | 
| //                                                         _json.getString("cpInfo"), | 
| //                                                         (float) _json.getDouble("mount"), | 
| //                                                         URLEncoder.encode(_extraData.toString(), | 
| //                                                                           "utf-8")); | 
| //                        if (_yjAppID.contains("mzgame") | 
| //                                || _yjAppID.contains("ucgame") | 
| //                                || _yjAppID.contains("yybgame")) | 
| //                        { | 
| //                            QuickPlatformUtil.getInstance().pay(_activity, | 
| //                                                             _json.getString("title"), | 
| //                                                             _json.getString("cpInfo"), | 
| //                                                             (float) _json.getDouble("mount"), | 
| //                                                             URLEncoder.encode( | 
| //                                                                     _extraData.toString(), | 
| //                                                                     "utf-8")); | 
| //                        } | 
| //                        else | 
| //                        { | 
| //                            QuickPlatformUtil.getInstance().charge(_activity, | 
| //                                                                _json.getString("title"), | 
| //                                                                (float) _json.getDouble("mount"), | 
| //                                                                URLEncoder.encode( | 
| //                                                                        _extraData.toString(), | 
| //                                                                        "utf-8")); | 
| //                        } | 
|   | 
|                         GameRoleInfo roleInfo3 = new GameRoleInfo(); | 
|                         roleInfo3.setServerID(_json.getString("sid")); | 
|                         roleInfo3.setServerName(_json.getString("serverName")); | 
|                         roleInfo3.setGameRoleName(_json.getString("roleName").trim().replace(" ", "")); | 
|                         roleInfo3.setGameRoleID(_json.getString("roleID")); | 
|                         roleInfo3.setGameBalance(_json.getString("money")); | 
|                         roleInfo3.setVipLevel(_json.getString("vipLevel"));  //设置当前用户vip等级,必须为数字整型字符串,请勿传"vip1"等类似字符串 | 
|                         roleInfo3.setGameUserLevel(_json.getString("level"));//设置游戏角色等级 | 
|                         roleInfo3.setPartyName(_json.getString("familyName").trim().replace(" ", ""));//设置帮派名称 | 
|                         roleInfo3.setRoleCreateTime(_json.getString("createTime")); //UC,当乐与1881,TT渠道必传,值为10位数时间戳 | 
|   | 
|                         roleInfo3.setPartyId("1100"); //360渠道参数,设置帮派id,必须为整型字符串 | 
|                         roleInfo3.setGameRolePower("38"); //360,TT语音渠道参数,设置角色战力,必须为整型字符串 | 
|                         roleInfo3.setPartyRoleId("11"); //360渠道参数,设置角色在帮派中的id | 
|                         roleInfo3.setPartyRoleName("帮主"); //360渠道参数,设置角色在帮派中的名称 | 
|                         roleInfo3.setProfessionId("38"); //360渠道参数,设置角色职业id,必须为整型字符串 | 
|                         roleInfo3.setProfession("法师"); //360渠道参数,设置角色职业名称 | 
|                         roleInfo3.setFriendlist( | 
|                                 "无"); //360渠道参数,设置好友关系列表,格式请参考:http://open.quicksdk.net/help/detail/aid/190 | 
|                         OrderInfo orderInfo = new OrderInfo(); | 
|                         orderInfo.setCpOrderID(_json.getString("orderId")); | 
|                         orderInfo.setGoodsName(_json.getString("title"));//商品名称,不带数量 | 
|                         orderInfo.setCount(1);//游戏币数量 | 
|                         orderInfo.setAmount((float) _json.getDouble("mount")); | 
|                         orderInfo.setGoodsID(_json.getString("cpInfo")); | 
|                         orderInfo.setGoodsDesc(_json.getString("title")); | 
|                         //orderInfo.setPrice(0.1); | 
|                         orderInfo.setExtrasParams( | 
|                                 URLEncoder.encode(_extraData.toString(), "utf-8")); | 
|                         //Payment.getInstance().pay(_activity, orderInfo, roleInfo3); | 
|                         PayEx(_activity, orderInfo, roleInfo3); | 
|                         //PayExTurbo(_activity,convertToDouble(_json.getString("money"),0)); | 
|   | 
|                     } catch (UnsupportedEncodingException e) | 
|                     { | 
|                         e.printStackTrace(); | 
|                     } | 
|   | 
|                     break; | 
|                 case CodeU2A.PayFinished: | 
|                     QuickPlatformUtil.getInstance().payProcessing = false; | 
|                     break; | 
|                 case CodeU2A.CreateRole: | 
|                     GameRoleInfo roleInfo = new GameRoleInfo(); | 
|                     roleInfo.setServerID(_json.getString("sid")); | 
|                     roleInfo.setServerName(_json.getString("serverName")); | 
|                     roleInfo.setGameRoleName(_json.getString("roleName").trim().replace(" ", "")); | 
|                     roleInfo.setGameRoleID(_json.getString("roleID")); | 
|                     roleInfo.setGameBalance(_json.getString("money")); | 
|                     roleInfo.setVipLevel( | 
|                             _json.getString("vipLevel"));  //设置当前用户vip等级,必须为数字整型字符串,请勿传"vip1"等类似字符串 | 
|                     roleInfo.setGameUserLevel(_json.getString("level"));//设置游戏角色等级 | 
|                     roleInfo.setPartyName(_json.getString("familyName").trim().replace(" ", | 
|                                                                                        ""));//设置帮派名称 | 
|                     roleInfo.setRoleCreateTime( | 
|                             _json.getString("createTime")); //UC,当乐与1881,TT渠道必传,值为10位数时间戳 | 
|   | 
|                     roleInfo.setPartyId("1100"); //360渠道参数,设置帮派id,必须为整型字符串 | 
|                     roleInfo.setGameRolePower("38"); //360,TT语音渠道参数,设置角色战力,必须为整型字符串 | 
|                     roleInfo.setPartyRoleId("11"); //360渠道参数,设置角色在帮派中的id | 
|                     roleInfo.setPartyRoleName("帮主"); //360渠道参数,设置角色在帮派中的名称 | 
|                     roleInfo.setProfessionId("38"); //360渠道参数,设置角色职业id,必须为整型字符串 | 
|                     roleInfo.setProfession("法师"); //360渠道参数,设置角色职业名称 | 
|                     roleInfo.setFriendlist( | 
|                             "无"); //360渠道参数,设置好友关系列表,格式请参考:http://open.quicksdk.net/help/detail/aid/190 | 
|                     //User.getInstance().setGameRoleInfo(_activity, roleInfo, true); | 
|                     SetRoleInfoEx(_activity, roleInfo, true); | 
|                     RegistTurbo(_activity); | 
| //                    QuickPlatformUtil.getInstance().createRole(_activity, | 
| //                                                            _json.getString("sid"), | 
| //                                                            _json.getString("serverName"), | 
| //                                                            _json.getString("roleID"), | 
| //                                                            _json.getString("roleName").trim() | 
| //                                                                    .replace(" ", ""), | 
| //                                                            _json.getString("level"), | 
| //                                                            _json.getString("familyName").trim() | 
| //                                                                    .replace(" ", ""), | 
| //                                                            _json.getString("createTime"), | 
| //                                                            _json.getString("vipLevel"), | 
| //                                                            _json.getString("money")); | 
|                     break; | 
|                 case CodeU2A.RoleLogin: | 
|                     GameRoleInfo roleInfo1 = new GameRoleInfo(); | 
|                     roleInfo1.setServerID(_json.getString("sid")); | 
|                     roleInfo1.setServerName(_json.getString("serverName")); | 
|                     roleInfo1.setGameRoleName(_json.getString("roleName").trim().replace(" ", "")); | 
|                     roleInfo1.setGameRoleID(_json.getString("roleID")); | 
|                     roleInfo1.setGameBalance(_json.getString("money")); | 
|                     roleInfo1.setVipLevel( | 
|                             _json.getString("vipLevel"));  //设置当前用户vip等级,必须为数字整型字符串,请勿传"vip1"等类似字符串 | 
|                     roleInfo1.setGameUserLevel(_json.getString("level"));//设置游戏角色等级 | 
|                     roleInfo1.setPartyName(_json.getString("familyName").trim().replace(" ", | 
|                                                                                         ""));//设置帮派名称 | 
|                     roleInfo1.setRoleCreateTime( | 
|                             _json.getString("createTime")); //UC,当乐与1881,TT渠道必传,值为10位数时间戳 | 
|   | 
|                     roleInfo1.setPartyId("1100"); //360渠道参数,设置帮派id,必须为整型字符串 | 
|                     roleInfo1.setGameRolePower("38"); //360,TT语音渠道参数,设置角色战力,必须为整型字符串 | 
|                     roleInfo1.setPartyRoleId("11"); //360渠道参数,设置角色在帮派中的id | 
|                     roleInfo1.setPartyRoleName("帮主"); //360渠道参数,设置角色在帮派中的名称 | 
|                     roleInfo1.setProfessionId("38"); //360渠道参数,设置角色职业id,必须为整型字符串 | 
|                     roleInfo1.setProfession("法师"); //360渠道参数,设置角色职业名称 | 
|                     roleInfo1.setFriendlist( | 
|                             "无"); //360渠道参数,设置好友关系列表,格式请参考:http://open.quicksdk.net/help/detail/aid/190 | 
|                     //User.getInstance().setGameRoleInfo(_activity, roleInfo1, false); | 
|                     SetRoleInfoEx(_activity, roleInfo1, false); | 
| //                    QuickPlatformUtil.getInstance().enterWorld(_activity, | 
| //                                                            _json.getString("sid"), | 
| //                                                            _json.getString("serverName"), | 
| //                                                            _json.getString("roleID"), | 
| //                                                            _json.getString("roleName").trim() | 
| //                                                                    .replace(" ", ""), | 
| //                                                            _json.getString("level"), | 
| //                                                            _json.getString("familyName").trim() | 
| //                                                                    .replace(" ", ""), | 
| //                                                            _json.getString("vipLevel"), | 
| //                                                            _json.getString("money")); | 
|                     verifyRealName(_activity); | 
|                     break; | 
|                 case CodeU2A.RoleLevelUp: | 
|                     GameRoleInfo roleInfo2 = new GameRoleInfo(); | 
|                     roleInfo2.setServerID(_json.getString("sid")); | 
|                     roleInfo2.setServerName(_json.getString("serverName")); | 
|                     roleInfo2.setGameRoleName(_json.getString("roleName").trim().replace(" ", "")); | 
|                     roleInfo2.setGameRoleID(_json.getString("roleID")); | 
|                     roleInfo2.setGameBalance(_json.getString("money")); | 
|                     roleInfo2.setVipLevel( | 
|                             _json.getString("vipLevel"));  //设置当前用户vip等级,必须为数字整型字符串,请勿传"vip1"等类似字符串 | 
|                     roleInfo2.setGameUserLevel(_json.getString("level"));//设置游戏角色等级 | 
|                     roleInfo2.setPartyName(_json.getString("familyName").trim().replace(" ", | 
|                                                                                         ""));//设置帮派名称 | 
|                     roleInfo2.setRoleCreateTime( | 
|                             _json.getString("createTime")); //UC,当乐与1881,TT渠道必传,值为10位数时间戳 | 
|   | 
|                     roleInfo2.setPartyId("1100"); //360渠道参数,设置帮派id,必须为整型字符串 | 
|                     roleInfo2.setGameRolePower("38"); //360,TT语音渠道参数,设置角色战力,必须为整型字符串 | 
|                     roleInfo2.setPartyRoleId("11"); //360渠道参数,设置角色在帮派中的id | 
|                     roleInfo2.setPartyRoleName("帮主"); //360渠道参数,设置角色在帮派中的名称 | 
|                     roleInfo2.setProfessionId("38"); //360渠道参数,设置角色职业id,必须为整型字符串 | 
|                     roleInfo2.setProfession("法师"); //360渠道参数,设置角色职业名称 | 
|                     roleInfo2.setFriendlist( | 
|                             "无"); //360渠道参数,设置好友关系列表,格式请参考:http://open.quicksdk.net/help/detail/aid/190 | 
|   | 
|                     //User.getInstance().setGameRoleInfo(_activity, roleInfo2, false); | 
|                     SetRoleInfoEx(_activity, roleInfo2, false); | 
| //                    QuickPlatformUtil.getInstance().levelUp(_activity, | 
| //                                                         _json.getString("sid"), | 
| //                                                         _json.getString("serverName"), | 
| //                                                         _json.getString("roleID"), | 
| //                                                         _json.getString("roleName").trim() | 
| //                                                                 .replace(" ", ""), | 
| //                                                         _json.getString("level"), | 
| //                                                         _json.getString("familyName").trim() | 
| //                                                                 .replace(" ", ""), | 
| //                                                         _json.getString("createTime"), | 
| //                                                         _json.getString("levelUpTime"), | 
| //                                                         _json.getString("vipLevel"), | 
| //                                                         _json.getString("money")); | 
|                     break; | 
|                 case CodeU2A.ClientPackage: | 
|                     break; | 
|                 case CodeU2A.JPushAddLocalMessage: | 
|                     addLocalNotification(_activity, | 
|                                          _json.getInt("id"), | 
|                                          _json.getString("title"), | 
|                                          _json.getString("content"), | 
|                                          _json.getLong("fireTime")); | 
|                     break; | 
|                 case CodeU2A.JPushRemoveLocalMessage: | 
|                     removeNotification(_activity, _json.getInt("id")); | 
|                     break; | 
|                 case CodeU2A.TencentLogin: | 
|                     //QuickPlatformUtil.getInstance().loginTencent(_activity, _json.getString("param")); | 
|                     break; | 
|                 case CodeU2A.SendRegistEvent: | 
|                     //QuickPlatformUtil.getInstance().SendRegisterEvent(); | 
|                     break; | 
|             } | 
|   | 
|         } catch (JSONException e) | 
|         { | 
|             e.printStackTrace(); | 
|         } | 
|     } | 
|   | 
|     // 本地推送 | 
|     public static void addLocalNotification(Activity activity, int id, String title, String content, | 
|                                             long fireTime) | 
|     { | 
|         if (PushEnable) | 
|         { | 
|             try | 
|             { | 
|                 JPushLocalNotification ln = new JPushLocalNotification(); | 
|                 ln.setBuilderId(0);// 设置样式 | 
|                 ln.setNotificationId(id);// id | 
|                 ln.setTitle(title);// 标题 | 
|   | 
|                 ln.setContent(content);// 内容 | 
|                 ln.setBroadcastTime(fireTime);// 等待时间 | 
|                 JPushInterface.addLocalNotification(activity, ln); | 
|             } catch (Exception e) | 
|             { | 
|                 e.printStackTrace(); | 
|             } | 
|         } | 
|     } | 
|   | 
|     public static void removeNotification(Activity activity, int id) | 
|     { | 
|         if (PushEnable) | 
|         { | 
|             JPushInterface.removeLocalNotification(activity, id); | 
|         } | 
|     } | 
|   | 
|     public static void GetExternalStorage() | 
|     { | 
|         Map<String, Object> _msg = new HashMap<>(); | 
|         _msg.put("code", CodeA2U.ExternalStorage); | 
|         _msg.put("path", Environment.getExternalStorageDirectory().getAbsolutePath()); | 
|         UniversalUtil.sendMessageToUnity(_msg); | 
|     } | 
|   | 
|     public static void InstallApp(Activity activity, String path) | 
|     { | 
|         File _file = new File(path); | 
|   | 
|         if (_file == null) | 
|         { | 
|             LogUtil.i(TAG, "找不到给定地址的apk: " + path); | 
|             return; | 
|         } | 
|   | 
|         try | 
|         { | 
|             Intent _intent = new Intent(Intent.ACTION_VIEW); | 
|   | 
|             if (Build.VERSION.SDK_INT >= 23) | 
|             { | 
|                 _intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); | 
|                 Uri _contentUri = FileProvider.getUriForFile(activity, | 
|                                                              "com.shandangceshi.snxxz.fileProvider", | 
|                                                              _file); | 
|                 _intent.setDataAndType(_contentUri, "application/vnd.android.package-archive"); | 
|   | 
|             } | 
|             else | 
|             { | 
|                 _intent.setDataAndType(Uri.fromFile(_file), | 
|                                        "application/vnd.android.package-archive"); | 
|                 _intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); | 
|             } | 
|   | 
|             activity.startActivity(_intent); | 
|   | 
|         } catch (Exception e) | 
|         { | 
|             e.printStackTrace(); | 
|             Toast.makeText(activity, "没有找到打开此类文件的程序", Toast.LENGTH_SHORT).show(); | 
|         } | 
|     } | 
|   | 
|     public static void LoginEx(final Activity activity) | 
|     { | 
|         activity.runOnUiThread(new Runnable() | 
|         { | 
|             @Override | 
|             public void run() | 
|             { | 
|                 QuickPlatformUtil.getInstance().login(activity); | 
|             } | 
|         }); | 
|     } | 
|   | 
|     public static void LogoutEx(final Activity activity) | 
|     { | 
|         activity.runOnUiThread(new Runnable() | 
|         { | 
|             @Override | 
|             public void run() | 
|             { | 
|                 QuickPlatformUtil.getInstance().logout(activity); | 
|             } | 
|         }); | 
|     } | 
|   | 
|     public static void SetRoleInfoEx(final Activity activity, final GameRoleInfo roleInfo, final boolean createRole) | 
|     { | 
|         activity.runOnUiThread(new Runnable() | 
|         { | 
|             @Override | 
|             public void run() | 
|             { | 
|                 User.getInstance().setGameRoleInfo(activity, roleInfo, createRole); | 
|             } | 
|         }); | 
|     } | 
|   | 
|     public static void PayEx(final Activity activity, final OrderInfo orderInfo, final GameRoleInfo roleInfo) | 
|     { | 
|         activity.runOnUiThread(new Runnable() | 
|         { | 
|             @Override | 
|             public void run() | 
|             { | 
|                 Payment.getInstance().pay(activity, orderInfo, roleInfo); | 
|             } | 
|         }); | 
|     } | 
|   | 
|   | 
|     public static void CopyContent(final Activity activity, final String content) | 
|     { | 
|         activity.runOnUiThread(new Runnable() | 
|         { | 
|             @Override | 
|             public void run() | 
|             { | 
|                 ClipboardManager _mgr = (ClipboardManager) activity.getSystemService( | 
|                         Context.CLIPBOARD_SERVICE); | 
|                 ClipData _data = ClipData.newPlainText("playerId", content); | 
|                 _mgr.setPrimaryClip(_data); | 
|             } | 
|         }); | 
|     } | 
|   | 
|     public static void RestartApp(final Activity activity) | 
|     { | 
|         activity.runOnUiThread(new Runnable() | 
|         { | 
|             @Override | 
|             public void run() | 
|             { | 
|                 new Thread() | 
|                 { | 
|                     public void run() | 
|                     { | 
|                         String _pn = activity.getPackageName(); | 
|                         PackageManager _pm = activity.getPackageManager(); | 
|                         Intent _l = _pm.getLaunchIntentForPackage(_pn); | 
|                         _l.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); | 
|                         activity.startActivity(_l); | 
|                         android.os.Process.killProcess(android.os.Process.myPid()); | 
|                     } | 
|                 }.start(); | 
|                 activity.finish(); | 
|             } | 
|         }); | 
|     } | 
|   | 
|     public static void init(final Activity activity) | 
|     { | 
|         final int _memoryTotal = (int) (UniversalUtil.getMemTotal() / 1024); | 
|         if (_memoryTotal < 1024) | 
|         { | 
|             LogUtil.i(TAG, "检测设备内存不满足运行程序标准"); | 
|             AlertDialog.Builder _builder = new AlertDialog.Builder(activity); | 
|             _builder.setIcon(R.drawable.app_icon); | 
|             _builder.setTitle("警告"); | 
|             _builder.setMessage("您的手机内存不足,无法正常运行游戏"); | 
|             _builder.setPositiveButton("确定", new DialogInterface.OnClickListener() | 
|             { | 
|                 @Override | 
|                 public void onClick(DialogInterface dialogInterface, int i) | 
|                 { | 
|                     android.os.Process.killProcess(android.os.Process.myPid()); | 
|                 } | 
|             }); | 
|             _builder.show(); | 
|             return; | 
|         } | 
|   | 
|         //PushEnable = activity.getPackageName().equals("com.xjaz.sp"); | 
|   | 
|         new Thread(new Runnable() | 
|         { | 
|             @Override | 
|             public void run() | 
|             { | 
|                 LogUtil.i(TAG, "开始执行初始化"); | 
|   | 
|                 GetExternalStorage(); | 
|   | 
|                 // ------------------------------- 设备信息 ------------------------------- | 
|                 Map<String, Object> _msgStruct = new HashMap<>(); | 
|                 _msgStruct.put("code", CodeA2U.DeviceInfo); | 
|                 _msgStruct.put("userAgent", System.getProperty("http.agent")); | 
|                 _msgStruct.put("mac", UniqueID.getLocalMac(activity)); | 
|                 _msgStruct.put("imei", UniqueID.getDeviceId(activity)); | 
|                 _msgStruct.put("android_id", | 
|                                Settings.System.getString(activity.getContentResolver(), | 
|                                                          Settings.System.ANDROID_ID)); | 
|                 _msgStruct.put("unique_id", UniqueID.get(activity)); | 
|                 _msgStruct.put("memoryTotal", _memoryTotal); | 
|                 UniversalUtil.sendMessageToUnity(_msgStruct); | 
|   | 
|                 // ------------------------------- 极光推送 ------------------------------- | 
|                 String _registrationID = "0"; | 
|                 if (PushEnable) | 
|                 { | 
|                     JPushInterface.setDebugMode(true); | 
|                     JPushInterface.init(activity); | 
|   | 
|                     final long _waitingTime = System.currentTimeMillis(); | 
|   | 
|                     while (true) | 
|                     { | 
|                         // 等待获取极光registrationID | 
|                         if (!JPushInterface.getRegistrationID(activity).equals("")) | 
|                         { | 
|                             _registrationID = JPushInterface.getRegistrationID(activity); | 
|                             break; | 
|                         } | 
|   | 
|                         long _escapeTime = System.currentTimeMillis() - _waitingTime; | 
|   | 
|                         if (_escapeTime > 3000) | 
|                         { | 
|                             LogUtil.w(TAG, "等待获取极光推送registrationID超时: 3秒"); | 
|                             break; | 
|                         } | 
|                     } | 
|                 } | 
|   | 
|                 _msgStruct.clear(); | 
|                 _msgStruct.put("code", CodeA2U.PushClientID); | 
|                 _msgStruct.put("clientID", _registrationID); | 
|                 UniversalUtil.sendMessageToUnity(_msgStruct); | 
|   | 
|                 _msgStruct.clear(); | 
|                 _msgStruct.put("code", CodeA2U.SdkInitComplete); | 
|                 _msgStruct.put("channelPlatform", "quick"); | 
|                 //根据appid是否相同和后台配置 可调整混服和专服 | 
|                 //打包工具可添加自定义参数 | 
|                 String _appid = com.quicksdk.Extend.getInstance().getExtrasConfig("zfappid"); | 
|                 if (_appid == "") | 
|                 { | 
|                     //没有打包的自定义参数则取配置表 | 
|                     _appid = APP_ID; | 
|                 } | 
|                 //通知到unity中的账号已经加上渠道ID,保证appid和spid唯一对应, 需要注意和sdk交互时使用最原始的uid | 
|                 _msgStruct.put("yj_appid", _appid); | 
|                 _msgStruct.put("yj_spid", _appid); | 
|                 UniversalUtil.sendMessageToUnity(_msgStruct); | 
|   | 
|                 LogUtil.i(TAG, "初始化执行完毕"); | 
|             } | 
|   | 
|         }).start(); | 
|     } | 
|   | 
|     public static void onCreate(Activity activity, Bundle savedInstanceState) | 
|     { | 
|         //初始化sdk,注意相关权限的申请,如IMEI权限,强烈建议先进行申请权限后进行初始化 | 
|         TurboAgent.init(TurboConfig.TurboConfigBuilder.create(activity.getBaseContext()) | 
|                 .setAppId("70261") //请填写平台申请的appId | 
|                 .setAppName("djmx_ay") //请填写申请Appid时填写的appName | 
|                 .setEnableDebug(true) | 
|                 .build()); | 
|   | 
|         Sdk.getInstance().onCreate(activity); | 
|         try { | 
|             // check权限 | 
|             if ((ContextCompat.checkSelfPermission(activity, | 
|                     Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) | 
|                     || (ContextCompat.checkSelfPermission(activity, | 
|                     Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)) { | 
|                 // 没有 , 申请权限 权限数组 | 
|                 ActivityCompat.requestPermissions(activity, new String[] { | 
|                         Manifest.permission.READ_PHONE_STATE, Manifest.permission.WRITE_EXTERNAL_STORAGE }, 1); | 
|             } else { | 
|                 QuickPlatformUtil.getInstance().onCreate(activity); | 
|                 Sdk.getInstance().init(activity,"16738592021815700006389081047799", "46221152"); | 
|             } | 
|         } catch (Exception e) { | 
|             QuickPlatformUtil.getInstance().onCreate(activity); | 
|             Sdk.getInstance().init(activity, "16738592021815700006389081047799", "46221152"); | 
|         } | 
|         QuickSDK.getInstance().setIsLandScape(true); | 
|   | 
|   | 
|     } | 
|   | 
|     //付费 | 
|     public static void PayExTurbo(final Activity activity, final double money) | 
|     { | 
|         activity.runOnUiThread(new Runnable() | 
|         { | 
|             @Override | 
|             public void run() | 
|             { | 
|                 TurboAgent.onPay(money); | 
|             } | 
|         }); | 
|     } | 
|     //注册 | 
|     public static void RegistTurbo(final Activity activity) | 
|     { | 
|         activity.runOnUiThread(new Runnable() | 
|         { | 
|             @Override | 
|             public void run() | 
|             { | 
|                 TurboAgent.onRegister(); | 
|             } | 
|         }); | 
|     } | 
|     //激活 | 
|     public static void ActiveTurbo(final Activity activity) | 
|     { | 
|         activity.runOnUiThread(new Runnable() | 
|         { | 
|             @Override | 
|             public void run() | 
|             { | 
|                 TurboAgent.onAppActive(); | 
|             } | 
|         }); | 
|     } | 
|     public static double convertToDouble(String number, double defaultValue) { | 
|         if (TextUtils.isEmpty(number)) { | 
|             return defaultValue; | 
|         } | 
|         try { | 
|             return Double.parseDouble(number); | 
|         } catch (Exception e) { | 
|             return defaultValue; | 
|         } | 
|   | 
|     } | 
|     private static boolean m_IsFocus = true; | 
|   | 
|     public static void onWindowFocusChanged(boolean b) | 
|     { | 
|         if (b) | 
|         { | 
|             if (QuickPlatformUtil.getInstance().payProcessing) | 
|             { | 
|                 Map<String, Object> _msgStruct = new HashMap<>(); | 
|                 _msgStruct.put("code", CodeA2U.FreePlatformPayCancel); | 
|                 UniversalUtil.sendMessageToUnity(_msgStruct); | 
|                 QuickPlatformUtil.getInstance().payProcessing = false; | 
|             } | 
|         } | 
|   | 
|         m_IsFocus = b; | 
|     } | 
|   | 
|     public static void onNewIntent(final Activity activity, final Intent intent) | 
|     { | 
|         Sdk.getInstance().onNewIntent(intent); | 
|     } | 
|   | 
|     public static void onActivityResult(int requestCode, | 
|                                         int resultCode, | 
|                                         final Intent data, | 
|                                         final Activity activity) | 
|     { | 
|         Sdk.getInstance().onActivityResult(activity, requestCode, resultCode, data); | 
|     } | 
|   | 
|     public static void onConfigurationChanged(final Configuration newConfig) {} | 
|   | 
|     public static void onRestart(final Activity activity) | 
|     { | 
|         Sdk.getInstance().onRestart(activity); | 
|     } | 
|   | 
|     public static void onStart(final Activity activity) | 
|     { | 
|         Sdk.getInstance().onStart(activity); | 
|     } | 
|   | 
|     public static void onPause(final Activity activity) | 
|     { | 
|         Sdk.getInstance().onPause(activity); | 
|     } | 
|   | 
|     public static void onResume(final Activity activity) | 
|     { | 
|         Sdk.getInstance().onResume(activity); | 
|     } | 
|   | 
|     public static void onStop(final Activity activity) | 
|     { | 
|         Sdk.getInstance().onStop(activity); | 
|     } | 
|   | 
|     public static void onDestroy(final Activity activity) | 
|     { | 
|         Sdk.getInstance().onDestroy(activity); | 
|     } | 
|   | 
|     private static void verifyRealName(final Activity activity) { | 
|         activity.runOnUiThread(new Runnable() { | 
|             @Override | 
|             public void run() { | 
|                 // 判断渠道是否支持实名认证功能 | 
|                 if (com.quicksdk.Extend.getInstance().isFunctionSupported(com.quicksdk.FuncType.REAL_NAME_REGISTER)) { | 
|                     com.quicksdk.Extend.getInstance().callFunctionWithParamsCallBack(activity, com.quicksdk.FuncType.REAL_NAME_REGISTER, new com.quicksdk.BaseCallBack() { | 
|                         @Override | 
|                         public void onSuccess(Object... arg0) { | 
|                             if (arg0 != null && arg0.length > 0) { | 
|                                 JSONObject jsonObject = (JSONObject) arg0[0]; | 
|                                 Log.d("json", "==========" + jsonObject.toString()); | 
|                                 try { | 
|                                     // 用户id | 
|                                     String uid = jsonObject.getString("uid"); | 
|                                     // 年龄, 如果渠道没返回默认为-1 | 
|                                     int age = jsonObject.getInt("age"); | 
|                                     // 是否已实名 true表示已实名 | 
|                                     // false表示未实名,如果渠道没返回默认为false | 
|                                     boolean realName = jsonObject.getBoolean("realName"); | 
|                                     // oppo实名认证失败之后是否可以继续游戏 true表示可以 | 
|                                     // false表示不可以,如果渠道没返回默认为true | 
|                                     boolean resumeGame = jsonObject.getBoolean("resumeGame"); | 
|                                     // 预留字段,如果渠道没返回默认为""的字符串 | 
|                                     String other = jsonObject.getString("other"); | 
|                                     // 游戏根据返回信息做对应的逻辑处理 | 
|   | 
|                                 } catch (JSONException e) { | 
|   | 
|                                 } | 
|                             } | 
|                         } | 
|   | 
|                         @Override | 
|                         public void onFailed(Object... arg0) { | 
|   | 
|                         } | 
|                     }); | 
|                 } | 
|             } | 
|         }); | 
|     } | 
| } |