From 3bbd2c96b5f22c98cb0adef6378e75a9f404feaf Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 07 三月 2025 12:10:27 +0800
Subject: [PATCH] 0312 官网新sdk

---
 Project/app/src/game_904100357/java/com/secondworld/univeralsdk/H2EngineSDK.java |  383 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 383 insertions(+), 0 deletions(-)

diff --git a/Project/app/src/game_904100357/java/com/secondworld/univeralsdk/H2EngineSDK.java b/Project/app/src/game_904100357/java/com/secondworld/univeralsdk/H2EngineSDK.java
new file mode 100644
index 0000000..dcda331
--- /dev/null
+++ b/Project/app/src/game_904100357/java/com/secondworld/univeralsdk/H2EngineSDK.java
@@ -0,0 +1,383 @@
+package com.secondworld.univeralsdk;
+
+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.Bundle;
+import android.os.Environment;
+import android.provider.Settings;
+import android.widget.Toast;
+
+import com.allugame.freesdk.port.FreePlatform;
+import com.unity3d.player.UnityPlayer;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+import cn.jpush.android.api.JPushInterface;
+import cn.jpush.android.data.JPushLocalNotification;
+
+public class H2EngineSDK
+{
+    private static final String TAG = "H2EngineSDK";
+
+    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:
+                    init(_activity);
+                    break;
+                case CodeU2A.AssetCopy:
+                    FileUtil.copyAssets(_activity);
+                    break;
+                case CodeU2A.CopyOneAsset:
+                    FileUtil.copy(_activity, _json.getString("fileName"));
+                    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:
+                    FreePlatformUtil.getInstace().init(_activity);
+                    break;
+                case CodeU2A.FreePlatformLogin:
+                    FreePlatformUtil.getInstace().login(_activity);
+                    break;
+                case CodeU2A.FreePlatformSwitchAccount:
+                    FreePlatformUtil.getInstace().switchAccount(_activity);
+                    break;
+                case CodeU2A.FreePlatformLogout:
+                    FreePlatformUtil.getInstace().logout();
+                    break;
+                case CodeU2A.FreePlatformPay:
+                    FreePlatformUtil.getInstace().pay(_activity,
+                                                      _json.getString("title"),
+                                                      _json.getString("orderId"),
+                                                      (float) _json.getDouble("mount"),
+                                                      _json.getString("cpInfo"));
+                    FreePlatformUtil.getInstace().payProcessing = true;
+                    break;
+                case CodeU2A.PayFinished:
+                    FreePlatformUtil.getInstace().payProcessing = false;
+                    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.SendRegistEvent:
+                    FreePlatformUtil.getInstance().SendRegisterEvent();
+                    break;
+            }
+
+        } catch (JSONException e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    // 鏈湴鎺ㄩ��
+    public static void addLocalNotification(Activity activity, int id, String title, String content,
+                                            long fireTime)
+    {
+        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)
+    {
+        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, "鎵句笉鍒扮粰瀹氬湴鍧�鐨刟pk: " + 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 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("鎮ㄧ殑鎵嬫満鍐呭瓨涓嶈冻,鏃犳硶姝e父杩愯娓告垙");
+            _builder.setPositiveButton("纭畾", new DialogInterface.OnClickListener()
+            {
+                @Override
+                public void onClick(DialogInterface dialogInterface, int i)
+                {
+                    android.os.Process.killProcess(android.os.Process.myPid());
+                }
+            });
+            _builder.show();
+            return;
+        }
+
+        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);
+
+                // ------------------------------- 鑷敱SDK -------------------------------
+                FreePlatformUtil.getInstace().init(activity);
+                // ------------------------------- 鏋佸厜鎺ㄩ�� -------------------------------
+                JPushInterface.setDebugMode(true);
+                JPushInterface.init(activity);
+
+                final long _waitingTime = System.currentTimeMillis();
+
+                while (true)
+                {
+                    // 绛夊緟鑾峰彇鏋佸厜registrationID
+                    if (!JPushInterface.getRegistrationID(activity).equals(""))
+                    {
+                        break;
+                    }
+
+                    long _escapeTime = System.currentTimeMillis() - _waitingTime;
+
+                    if (_escapeTime > 3000)
+                    {
+                        LogUtil.w(TAG, "绛夊緟鑾峰彇鏋佸厜鎺ㄩ�乺egistrationID瓒呮椂: 3绉�");
+                        break;
+                    }
+                }
+
+                _msgStruct.clear();
+                _msgStruct.put("code", CodeA2U.PushClientID);
+                _msgStruct.put("clientID", JPushInterface.getRegistrationID(activity));
+                UniversalUtil.sendMessageToUnity(_msgStruct);
+
+                _msgStruct.clear();
+                _msgStruct.put("code", CodeA2U.SdkInitComplete);
+                UniversalUtil.sendMessageToUnity(_msgStruct);
+
+                LogUtil.i(TAG, "鍒濆鍖栨墽琛屽畬姣�");
+            }
+
+        }).start();
+    }
+
+    public static void onCreate(Activity activity, Bundle savedInstanceState)
+    {
+        FreePlatform.getInstance().onCreate();
+    }
+
+    public static void onWindowFocusChanged(boolean b)
+    {
+    }
+
+    public static void onNewIntent(final Activity activity, final Intent intent)
+    {
+    }
+
+    public static void onActivityResult(int requestCode,
+                                        int resultCode,
+                                        final Intent data,
+                                        final Activity activity)
+    {
+    }
+
+    public static void onConfigurationChanged(final Configuration newConfig) {}
+
+    public static void onRestart(final Activity activity)
+    {
+    }
+
+    public static void onStart(final Activity activity)
+    {
+        FreePlatform.getInstance().onStart();
+    }
+
+    public static void onPause(final Activity activity)
+    {
+        FreePlatform.getInstance().onPause();
+    }
+
+    public static void onResume(final Activity activity)
+    {
+        FreePlatform.getInstance().onResume();
+
+        if(FreePlatformUtil.getInstace().payProcessing)
+        {
+            Map<String, Object> _msgStruct = new HashMap<>();
+            _msgStruct.put("code", CodeA2U.FreePlatformPayCancel);
+            UniversalUtil.sendMessageToUnity(_msgStruct);
+            FreePlatformUtil.getInstace().payProcessing = false;
+        }
+    }
+
+    public static void onStop(final Activity activity)
+    {
+        FreePlatform.getInstance().onStop();
+    }
+
+    public static void onDestroy(final Activity activity)
+    {
+        FreePlatform.getInstance().onDestory();
+    }
+}

--
Gitblit v1.8.0