diff --git a/app/build.gradle b/app/build.gradle
index 08a4b4c..2cc8f04 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -3,7 +3,7 @@ apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
- applicationId "com.hnjc.wjtx.mi"
+ applicationId "com.hnjc.wjtx.mz"
minSdkVersion 18
targetSdkVersion 28
versionCode 1
@@ -12,10 +12,20 @@ android {
abiFilters 'armeabi-v7a'
}
}
+ signingConfigs {
+ release {
+ storeFile file("../key/publish_key")
+ storePassword "7654321Kingsome_"
+ keyAlias "meizu"
+ keyPassword "7654321Kingsome_"
+ v2SigningEnabled false
+ }
+ }
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ signingConfig signingConfigs.release
}
}
sourceSets {
@@ -36,7 +46,6 @@ android {
dependencies {
implementation fileTree(include: ['*.jar','*.aar'], dir: 'libs')
- implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.android.volley:volley:1.1.1'
implementation 'org.greenrobot:eventbus:3.2.0'
}
diff --git a/app/libs/MzOnlineGameSDK_6.1.3_P.jar b/app/libs/MzOnlineGameSDK_6.1.3_P.jar
new file mode 100644
index 0000000..710a3b8
Binary files /dev/null and b/app/libs/MzOnlineGameSDK_6.1.3_P.jar differ
diff --git a/app/libs/android-support-v4.jar b/app/libs/android-support-v4.jar
new file mode 100644
index 0000000..187bdf4
Binary files /dev/null and b/app/libs/android-support-v4.jar differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d5882f7..a4c4100 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,57 +1,62 @@
+ package="com.hnjc.wjtx.mz">
+
+
-
+
-
-
-
+
+
+
+
+
+ android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"
+ android:usesCleartextTraffic="true">
-
-
+ android:theme="@style/SplashTheme">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/hnjc/wjtx/JCApplication.java b/app/src/main/java/com/hnjc/wjtx/mz/JCApplication.java
similarity index 50%
rename from app/src/main/java/com/hnjc/wjtx/JCApplication.java
rename to app/src/main/java/com/hnjc/wjtx/mz/JCApplication.java
index e040a76..d9ccb59 100644
--- a/app/src/main/java/com/hnjc/wjtx/JCApplication.java
+++ b/app/src/main/java/com/hnjc/wjtx/mz/JCApplication.java
@@ -1,12 +1,17 @@
-package com.hnjc.wjtx;
+package com.hnjc.wjtx.mz;
import android.app.Application;
import android.util.Log;
+import com.meizu.gamesdk.online.core.MzGameCenterPlatform;
+
public class JCApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Log.i("JCApplication", "JCApplication onCreate");
+ String appId = "3345357";
+ String appKey = "8ece854e1f9c4e50844bb14b8e0a29c8";
+ MzGameCenterPlatform.init(this, appId, appKey);
}
}
diff --git a/app/src/main/java/com/hnjc/wjtx/LaunchActivity.java b/app/src/main/java/com/hnjc/wjtx/mz/LaunchActivity.java
similarity index 97%
rename from app/src/main/java/com/hnjc/wjtx/LaunchActivity.java
rename to app/src/main/java/com/hnjc/wjtx/mz/LaunchActivity.java
index 1e23c84..c017c5d 100644
--- a/app/src/main/java/com/hnjc/wjtx/LaunchActivity.java
+++ b/app/src/main/java/com/hnjc/wjtx/mz/LaunchActivity.java
@@ -1,4 +1,4 @@
-package com.hnjc.wjtx;
+package com.hnjc.wjtx.mz;
import android.Manifest;
import android.app.Activity;
@@ -12,12 +12,12 @@ import android.util.Log;
import android.widget.ProgressBar;
import android.widget.TextView;
-import com.hnjc.wjtx.net.DownloadRunnable;
-import com.hnjc.wjtx.net.TaskInfo;
-import com.hnjc.wjtx.net.WebApi;
-import com.hnjc.wjtx.util.AssetsUtil;
-import com.hnjc.wjtx.util.StringUtil;
-import com.hnjc.wjtx.util.UnzipRunnable;
+import com.hnjc.wjtx.mz.net.DownloadRunnable;
+import com.hnjc.wjtx.mz.net.TaskInfo;
+import com.hnjc.wjtx.mz.net.WebApi;
+import com.hnjc.wjtx.mz.util.AssetsUtil;
+import com.hnjc.wjtx.mz.util.StringUtil;
+import com.hnjc.wjtx.mz.util.UnzipRunnable;
import org.json.JSONException;
import org.json.JSONObject;
diff --git a/app/src/main/java/com/hnjc/wjtx/MainActivity.java b/app/src/main/java/com/hnjc/wjtx/mz/MainActivity.java
similarity index 64%
rename from app/src/main/java/com/hnjc/wjtx/MainActivity.java
rename to app/src/main/java/com/hnjc/wjtx/mz/MainActivity.java
index f0740e0..a1f1e0c 100755
--- a/app/src/main/java/com/hnjc/wjtx/MainActivity.java
+++ b/app/src/main/java/com/hnjc/wjtx/mz/MainActivity.java
@@ -1,7 +1,6 @@
-package com.hnjc.wjtx;
+package com.hnjc.wjtx.mz;
import android.app.Activity;
-import android.app.AlertDialog;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Resources;
@@ -16,10 +15,17 @@ import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.Toast;
-import com.hnjc.wjtx.util.AssetsUtil;
-import com.hnjc.wjtx.util.IdUtil;
-import com.hnjc.wjtx.util.StorageUtil;
-import com.hnjc.wjtx.util.StringUtil;
+import com.hnjc.wjtx.mz.util.AssetsUtil;
+import com.hnjc.wjtx.mz.util.StorageUtil;
+import com.hnjc.wjtx.mz.util.StringUtil;
+import com.meizu.gamesdk.model.callback.MzExitListener;
+import com.meizu.gamesdk.model.callback.MzLoginListener;
+import com.meizu.gamesdk.model.callback.MzPayListener;
+import com.meizu.gamesdk.model.model.LoginResultCode;
+import com.meizu.gamesdk.model.model.MzAccountInfo;
+import com.meizu.gamesdk.model.model.MzBuyInfo;
+import com.meizu.gamesdk.model.model.PayResultCode;
+import com.meizu.gamesdk.online.core.MzGameCenterPlatform;
import org.egret.egretnativeandroid.EgretNativeAndroid;
import org.json.JSONException;
@@ -27,12 +33,13 @@ import org.json.JSONObject;
//Android项目发布设置详见doc目录下的README_ANDROID.md
-public class MainActivity extends Activity {
+public class MainActivity extends Activity implements MzLoginListener, MzPayListener {
private final String TAG = "MainActivity";
private EgretNativeAndroid nativeAndroid;
private ImageView launchScreenImageView = null;
private FrameLayout rootLayout = null;
private Vibrator vibrator;
+ private MzAccountInfo accountInfo;
@Override
@@ -87,18 +94,15 @@ public class MainActivity extends Activity {
public boolean onKeyDown(final int keyCode, final KeyEvent keyEvent) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//声明并初始化弹出对象
- AlertDialog.Builder builder=new AlertDialog.Builder(this);
- builder.setTitle("提示:");
- builder.setMessage("是否退出");
- //设置确认按钮
- builder.setNegativeButton("确定", (dialog, which) -> {
- nativeAndroid.exitGame();
- finish();//退出程序
+ MzGameCenterPlatform.exitSDK(this, new MzExitListener() {
+ @Override
+ public void callback(int i, String s) {
+ if (i == MzExitListener.CODE_SDK_EXIT) {
+ nativeAndroid.exitGame();
+ finish();//退出程序
+ }
+ }
});
- //设置取消按钮
- builder.setPositiveButton("取消",null);
- //显示弹框
- builder.show();
return true;
} else {
return super.onKeyDown(keyCode, keyEvent);
@@ -163,18 +167,7 @@ public class MainActivity extends Activity {
Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
});
nativeAndroid.setExternalInterface("getUid", message -> {
- //TODO: 平台的登陆
- JSONObject obj = new JSONObject();
- try {
- obj.put("openid", IdUtil.getUid(this));
- obj.put("token", "");
- // 如果其他登陆过程中的错误, 则传入一个大于0的errorcode
- obj.put("errorcode", 1);
- nativeAndroid.callExternalInterface("sendUidToJS", obj.toString());
- } catch (JSONException e) {
- e.printStackTrace();
- nativeAndroid.callExternalInterface("loginCancel", "");
- }
+ MzGameCenterPlatform.login(this, this);
});
nativeAndroid.setExternalInterface("@onState", message -> {
@@ -199,14 +192,24 @@ public class MainActivity extends Activity {
String productCode = jsonObject.getString("productCode");
int count = jsonObject.getInt("count");
//TODO: 平台的支付
- JSONObject obj = new JSONObject();
- try {
- obj.put("errcode", 0);
- obj.put("errmsg", "");
- nativeAndroid.callExternalInterface("payResult", obj.toString());
- } catch (JSONException e) {
- e.printStackTrace();
- }
+ Bundle buyBundle = new MzBuyInfo()
+ .setBuyCount(1)
+// .setCpUserInfo(cpUserInfo)
+// .setOrderAmount(1)
+// .setOrderId(cpOrderId)
+// .setPerPrice(count)
+// .setProductBody(productBody)
+// .setProductId(productId)
+// .setProductSubject(productSubject)
+// .setProductUnit(productUnit)
+// .setSign(sign)
+// .setSignType(signType)
+// .setCreateTime(createTime)
+// .setAppid(appid)
+// .setUserUid(uid)
+// .setPayType(payType)
+ .toBundle();
+ MzGameCenterPlatform.payOnline(MainActivity.this, buyBundle, MainActivity.this);
} catch (JSONException e) {
e.printStackTrace();
} catch ( Exception e ) {
@@ -266,4 +269,84 @@ public class MainActivity extends Activity {
launchScreenImageView = null;
}
+ /**
+ * 登录回调
+ * 请处理相关回调事件
+ *
+ * @param code 错误码
+ * @message 错误信息
+ * @MzAccountInfo 账号信息
+ */
+ @Override
+ public void onLoginResult(int code, final MzAccountInfo accountInfo, final String message) {
+ switch (code) {
+ case LoginResultCode.LOGIN_SUCCESS:
+ this.accountInfo = accountInfo; //保存登录信息,用于查询实名认证信息
+ JSONObject obj = new JSONObject();
+ try {
+ obj.put("openid", accountInfo.getUid());
+ obj.put("token", accountInfo.getSession());
+ // 如果其他登陆过程中的错误, 则传入一个大于0的errorcode
+ nativeAndroid.callExternalInterface("sendUidToJS", obj.toString());
+ } catch (JSONException e) {
+ e.printStackTrace();
+ nativeAndroid.callExternalInterface("loginCancel", "");
+ }
+ break;
+ case LoginResultCode.LOGIN_LOGOUT:
+ nativeAndroid.callExternalInterface("loginOut", "");
+ break;
+
+
+ default:
+ JSONObject obj1 = new JSONObject();
+ try {
+ obj1.put("errcode", code);
+ // 如果其他登陆过程中的错误, 则传入一个大于0的errorcode
+ nativeAndroid.callExternalInterface("sendUidToJS", message);
+ } catch (JSONException e) {
+ e.printStackTrace();
+ nativeAndroid.callExternalInterface("loginCancel", "");
+ }
+// runOnUiThread(new Runnable() {
+// @Override
+// public void run() {
+// showMsg(message);
+// }
+// });
+ break;
+ }
+
+ }
+
+ /**
+ * 支付录回调
+ * 请处理相关回调事件
+ *
+ * @param code 错误码
+ * @message 错误信息
+ * @bundle 支付信息
+ */
+ @Override
+ public void onPayResult(int code, final Bundle bundle, final String message) {
+ JSONObject obj = new JSONObject();
+ try {
+ obj.put("errcode", code);
+ obj.put("errmsg", message);
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ switch (code) {
+ case PayResultCode.PAY_SUCCESS: //支付成功
+ MzBuyInfo payInfo = MzBuyInfo.fromBundle(bundle);
+ Log.i(TAG, "支付成功: " + payInfo.getOrderId() + " | " + payInfo.getPerPrice());
+ case PayResultCode.PAY_ERROR_CANCEL: //支付取消
+ Log.i(TAG, "支付取消: ");
+ break;
+ default:
+ Log.i(TAG, "支付错误: code: " + code + " | " + message);
+ break;
+ }
+ nativeAndroid.callExternalInterface("payResult", obj.toString());
+ }
}
diff --git a/app/src/main/java/com/hnjc/wjtx/net/AppRequest.java b/app/src/main/java/com/hnjc/wjtx/mz/net/AppRequest.java
similarity index 98%
rename from app/src/main/java/com/hnjc/wjtx/net/AppRequest.java
rename to app/src/main/java/com/hnjc/wjtx/mz/net/AppRequest.java
index be6b956..71375a9 100644
--- a/app/src/main/java/com/hnjc/wjtx/net/AppRequest.java
+++ b/app/src/main/java/com/hnjc/wjtx/mz/net/AppRequest.java
@@ -1,4 +1,4 @@
-package com.hnjc.wjtx.net;
+package com.hnjc.wjtx.mz.net;
import com.android.volley.AuthFailureError;
import com.android.volley.NetworkResponse;
diff --git a/app/src/main/java/com/hnjc/wjtx/net/AppRequestUtil.java b/app/src/main/java/com/hnjc/wjtx/mz/net/AppRequestUtil.java
similarity index 98%
rename from app/src/main/java/com/hnjc/wjtx/net/AppRequestUtil.java
rename to app/src/main/java/com/hnjc/wjtx/mz/net/AppRequestUtil.java
index 225c20c..b3439b6 100644
--- a/app/src/main/java/com/hnjc/wjtx/net/AppRequestUtil.java
+++ b/app/src/main/java/com/hnjc/wjtx/mz/net/AppRequestUtil.java
@@ -1,4 +1,4 @@
-package com.hnjc.wjtx.net;
+package com.hnjc.wjtx.mz.net;
import android.content.Context;
diff --git a/app/src/main/java/com/hnjc/wjtx/net/BaseInterface.java b/app/src/main/java/com/hnjc/wjtx/mz/net/BaseInterface.java
similarity index 81%
rename from app/src/main/java/com/hnjc/wjtx/net/BaseInterface.java
rename to app/src/main/java/com/hnjc/wjtx/mz/net/BaseInterface.java
index fadc4c7..04b5140 100644
--- a/app/src/main/java/com/hnjc/wjtx/net/BaseInterface.java
+++ b/app/src/main/java/com/hnjc/wjtx/mz/net/BaseInterface.java
@@ -1,4 +1,4 @@
-package com.hnjc.wjtx.net;
+package com.hnjc.wjtx.mz.net;
import org.json.JSONObject;
diff --git a/app/src/main/java/com/hnjc/wjtx/net/BaseMode.java b/app/src/main/java/com/hnjc/wjtx/mz/net/BaseMode.java
similarity index 94%
rename from app/src/main/java/com/hnjc/wjtx/net/BaseMode.java
rename to app/src/main/java/com/hnjc/wjtx/mz/net/BaseMode.java
index 093b319..654a9b8 100644
--- a/app/src/main/java/com/hnjc/wjtx/net/BaseMode.java
+++ b/app/src/main/java/com/hnjc/wjtx/mz/net/BaseMode.java
@@ -1,4 +1,4 @@
-package com.hnjc.wjtx.net;
+package com.hnjc.wjtx.mz.net;
public class BaseMode {
private boolean status;
diff --git a/app/src/main/java/com/hnjc/wjtx/net/DownloadRunnable.java b/app/src/main/java/com/hnjc/wjtx/mz/net/DownloadRunnable.java
similarity index 99%
rename from app/src/main/java/com/hnjc/wjtx/net/DownloadRunnable.java
rename to app/src/main/java/com/hnjc/wjtx/mz/net/DownloadRunnable.java
index ccae946..d4db2ce 100644
--- a/app/src/main/java/com/hnjc/wjtx/net/DownloadRunnable.java
+++ b/app/src/main/java/com/hnjc/wjtx/mz/net/DownloadRunnable.java
@@ -1,4 +1,4 @@
-package com.hnjc.wjtx.net;
+package com.hnjc.wjtx.mz.net;
import android.util.Log;
diff --git a/app/src/main/java/com/hnjc/wjtx/net/RequestErrorEvent.java b/app/src/main/java/com/hnjc/wjtx/mz/net/RequestErrorEvent.java
similarity index 92%
rename from app/src/main/java/com/hnjc/wjtx/net/RequestErrorEvent.java
rename to app/src/main/java/com/hnjc/wjtx/mz/net/RequestErrorEvent.java
index aff1bc0..1c6be37 100644
--- a/app/src/main/java/com/hnjc/wjtx/net/RequestErrorEvent.java
+++ b/app/src/main/java/com/hnjc/wjtx/mz/net/RequestErrorEvent.java
@@ -1,4 +1,4 @@
-package com.hnjc.wjtx.net;
+package com.hnjc.wjtx.mz.net;
public class RequestErrorEvent {
private int type;
diff --git a/app/src/main/java/com/hnjc/wjtx/net/RequestListener.java b/app/src/main/java/com/hnjc/wjtx/mz/net/RequestListener.java
similarity index 82%
rename from app/src/main/java/com/hnjc/wjtx/net/RequestListener.java
rename to app/src/main/java/com/hnjc/wjtx/mz/net/RequestListener.java
index bbfc13a..c2099a8 100644
--- a/app/src/main/java/com/hnjc/wjtx/net/RequestListener.java
+++ b/app/src/main/java/com/hnjc/wjtx/mz/net/RequestListener.java
@@ -1,4 +1,4 @@
-package com.hnjc.wjtx.net;
+package com.hnjc.wjtx.mz.net;
import org.json.JSONObject;
diff --git a/app/src/main/java/com/hnjc/wjtx/net/TaskInfo.java b/app/src/main/java/com/hnjc/wjtx/mz/net/TaskInfo.java
similarity index 98%
rename from app/src/main/java/com/hnjc/wjtx/net/TaskInfo.java
rename to app/src/main/java/com/hnjc/wjtx/mz/net/TaskInfo.java
index 208834d..fd2eb23 100644
--- a/app/src/main/java/com/hnjc/wjtx/net/TaskInfo.java
+++ b/app/src/main/java/com/hnjc/wjtx/mz/net/TaskInfo.java
@@ -1,4 +1,4 @@
-package com.hnjc.wjtx.net;
+package com.hnjc.wjtx.mz.net;
public class TaskInfo {
private String name;//文件名
diff --git a/app/src/main/java/com/hnjc/wjtx/net/VolleyUtil.java b/app/src/main/java/com/hnjc/wjtx/mz/net/VolleyUtil.java
similarity index 94%
rename from app/src/main/java/com/hnjc/wjtx/net/VolleyUtil.java
rename to app/src/main/java/com/hnjc/wjtx/mz/net/VolleyUtil.java
index 87497b8..4ffbb65 100644
--- a/app/src/main/java/com/hnjc/wjtx/net/VolleyUtil.java
+++ b/app/src/main/java/com/hnjc/wjtx/mz/net/VolleyUtil.java
@@ -1,4 +1,4 @@
-package com.hnjc.wjtx.net;
+package com.hnjc.wjtx.mz.net;
import android.content.Context;
diff --git a/app/src/main/java/com/hnjc/wjtx/net/WebApi.java b/app/src/main/java/com/hnjc/wjtx/mz/net/WebApi.java
similarity index 96%
rename from app/src/main/java/com/hnjc/wjtx/net/WebApi.java
rename to app/src/main/java/com/hnjc/wjtx/mz/net/WebApi.java
index 5ab0f28..f6a4365 100644
--- a/app/src/main/java/com/hnjc/wjtx/net/WebApi.java
+++ b/app/src/main/java/com/hnjc/wjtx/mz/net/WebApi.java
@@ -1,4 +1,4 @@
-package com.hnjc.wjtx.net;
+package com.hnjc.wjtx.mz.net;
import android.content.Context;
diff --git a/app/src/main/java/com/hnjc/wjtx/util/AssetsUtil.java b/app/src/main/java/com/hnjc/wjtx/mz/util/AssetsUtil.java
similarity index 99%
rename from app/src/main/java/com/hnjc/wjtx/util/AssetsUtil.java
rename to app/src/main/java/com/hnjc/wjtx/mz/util/AssetsUtil.java
index 73f1481..6612317 100644
--- a/app/src/main/java/com/hnjc/wjtx/util/AssetsUtil.java
+++ b/app/src/main/java/com/hnjc/wjtx/mz/util/AssetsUtil.java
@@ -1,4 +1,4 @@
-package com.hnjc.wjtx.util;
+package com.hnjc.wjtx.mz.util;
import android.content.Context;
import android.content.res.AssetManager;
diff --git a/app/src/main/java/com/hnjc/wjtx/util/IdUtil.java b/app/src/main/java/com/hnjc/wjtx/mz/util/IdUtil.java
similarity index 88%
rename from app/src/main/java/com/hnjc/wjtx/util/IdUtil.java
rename to app/src/main/java/com/hnjc/wjtx/mz/util/IdUtil.java
index a554367..432d9a8 100644
--- a/app/src/main/java/com/hnjc/wjtx/util/IdUtil.java
+++ b/app/src/main/java/com/hnjc/wjtx/mz/util/IdUtil.java
@@ -1,4 +1,4 @@
-package com.hnjc.wjtx.util;
+package com.hnjc.wjtx.mz.util;
import android.content.ContentResolver;
import android.content.Context;
@@ -20,7 +20,7 @@ public class IdUtil {
while (enumeration.hasMoreElements()) {
NetworkInterface netInterface = enumeration.nextElement();
if (netInterface.getName().equals("wlan0")) {
- return com.hnjc.wjtx.util.StringUtil.getMD5(netInterface.getHardwareAddress().toString(), false);
+ return com.hnjc.wjtx.mz.util.StringUtil.getMD5(netInterface.getHardwareAddress().toString(), false);
}
}
} catch (Exception e) {
@@ -59,9 +59,9 @@ public class IdUtil {
ContentResolver resolver = context.getContentResolver();
String wifiMac = getWifiMac();
String androidId = getAndroidId(resolver);
- if (com.hnjc.wjtx.util.StringUtil.notBlank(androidId)) {
+ if (com.hnjc.wjtx.mz.util.StringUtil.notBlank(androidId)) {
return androidId;
- } else if (com.hnjc.wjtx.util.StringUtil.notBlank(wifiMac)) {
+ } else if (com.hnjc.wjtx.mz.util.StringUtil.notBlank(wifiMac)) {
return wifiMac;
} else {
return getUniquePsuedoID();
diff --git a/app/src/main/java/com/hnjc/wjtx/util/StorageUtil.java b/app/src/main/java/com/hnjc/wjtx/mz/util/StorageUtil.java
similarity index 96%
rename from app/src/main/java/com/hnjc/wjtx/util/StorageUtil.java
rename to app/src/main/java/com/hnjc/wjtx/mz/util/StorageUtil.java
index 1465067..827bc19 100644
--- a/app/src/main/java/com/hnjc/wjtx/util/StorageUtil.java
+++ b/app/src/main/java/com/hnjc/wjtx/mz/util/StorageUtil.java
@@ -1,4 +1,4 @@
-package com.hnjc.wjtx.util;
+package com.hnjc.wjtx.mz.util;
import android.content.SharedPreferences;
diff --git a/app/src/main/java/com/hnjc/wjtx/util/StringUtil.java b/app/src/main/java/com/hnjc/wjtx/mz/util/StringUtil.java
similarity index 98%
rename from app/src/main/java/com/hnjc/wjtx/util/StringUtil.java
rename to app/src/main/java/com/hnjc/wjtx/mz/util/StringUtil.java
index e407fc9..dcf0770 100644
--- a/app/src/main/java/com/hnjc/wjtx/util/StringUtil.java
+++ b/app/src/main/java/com/hnjc/wjtx/mz/util/StringUtil.java
@@ -1,4 +1,4 @@
-package com.hnjc.wjtx.util;
+package com.hnjc.wjtx.mz.util;
import java.security.MessageDigest;
diff --git a/app/src/main/java/com/hnjc/wjtx/util/UnzipRunnable.java b/app/src/main/java/com/hnjc/wjtx/mz/util/UnzipRunnable.java
similarity index 97%
rename from app/src/main/java/com/hnjc/wjtx/util/UnzipRunnable.java
rename to app/src/main/java/com/hnjc/wjtx/mz/util/UnzipRunnable.java
index 5837b1f..3e87fc9 100644
--- a/app/src/main/java/com/hnjc/wjtx/util/UnzipRunnable.java
+++ b/app/src/main/java/com/hnjc/wjtx/mz/util/UnzipRunnable.java
@@ -1,8 +1,8 @@
-package com.hnjc.wjtx.util;
+package com.hnjc.wjtx.mz.util;
import android.util.Log;
-import com.hnjc.wjtx.net.TaskInfo;
+import com.hnjc.wjtx.mz.net.TaskInfo;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 1b6b991..2288f62 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -3,7 +3,7 @@
下载游戏资源
进入游戏
preload
- http://local/index.html?channel=7103
+ http://local/index.html?channel=7108
1.0.0
load_back
获取游戏版本
diff --git a/app/src/main/res/xml/file_paths.xml b/app/src/main/res/xml/file_paths.xml
new file mode 100644
index 0000000..4495c28
--- /dev/null
+++ b/app/src/main/res/xml/file_paths.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/assets/MzGameCenterService_6.1.3.apk b/assets/MzGameCenterService_6.1.3.apk
new file mode 100644
index 0000000..02363ac
Binary files /dev/null and b/assets/MzGameCenterService_6.1.3.apk differ
diff --git a/key/publish_key b/key/publish_key
index 4b363cd..6673c0b 100644
Binary files a/key/publish_key and b/key/publish_key differ
diff --git a/platform.js b/platform.js
new file mode 100644
index 0000000..98080f3
--- /dev/null
+++ b/platform.js
@@ -0,0 +1,476 @@
+function getQueryString(name) {
+ var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
+ var r = window.location.search.substr(1).match(reg);
+ return r ? decodeURIComponent(r[2]) : '';
+}
+
+class GamePlatform {
+
+ constructor() {
+ this.name = 'native';
+ this.version = "1.0.7";
+ this.jcGameId = 1009;
+ this.jcChannelId = getQueryString('channel') ? Number(getQueryString('channel')) : 7103;
+ console.log('jcchannelid: ' + this.jcChannelId);
+ this.isDev = true;
+ this.orderIdUrl = `https://game1009proxy${this.isDev ? '-test':''}.kingsome.cn/webapp/index.php?c=Pay&a=preOrder`;
+ this.checkRegRewardUrl = `https://game1009proxy${this.isDev ? '-test':''}.kingsome.cn/webapp/index.php?c=GoProxy&a=checkRegisterReward`;
+ this.regRewardUrl = `https://game1009proxy${this.isDev ? '-test':''}.kingsome.cn/webapp/index.php?c=GoProxy&a=registerReward`;
+ this.svrListUrl = `https://game1009gate${this.isDev ? '-test':''}.kingsome.cn/wjtxgate/common/login.aspx?pid=${this.jcChannelId}`;
+ this.wssHost = `game1009game${this.isDev ? '-test' : ''}.kingsome.cn`;
+ this.other = new GamePlatformOther();
+ }
+ login() {
+ return new Promise((resolve, reject) => {
+ jc.init({
+ channelid: this.jcChannelId,
+ gameid: this.jcGameId,
+ isoffical: !this.isDev,
+ });
+ console.log('jcfw init finished 2');
+ jc.loginUser({
+ success: function(res) {
+ console.log('登录成功', JSON.stringify(res));
+ wxUserData.open_id = res.openid;
+ wxUserData.nick_name = res.nickname;
+ wxUserData.avatar_url = res.avatar_url;
+ wxUserData.gender = res.sex;
+ platform.code = res.openid;
+ //res.session_key
+ platform.session = res.session_id;
+ resolve(res);
+ },
+ fail: function(neterr, logicerr, errmsg) {
+ console.log('登录错误');
+ console.log(neterr, logicerr, errmsg);
+ reject(errmsg);
+ }
+ });
+ });
+ }
+
+ getUserInfo() {
+ return new Promise((resolve, reject) => {
+ platform.login().then(res => {
+ console.log("登录成功");
+ resolve();
+
+ }).catch(err => {
+ reject(err);
+ });
+ })
+ }
+
+ // obj { data, success, fail }
+
+ _getOrderId(pid, uid, sid, callback) {
+ var url = jc.gg.extcfg['prePayUrl'] || this.orderIdUrl;
+ var reqData = {
+ openid: platform.code,
+ produce: pid,
+ gameid: platform.jcGameId,
+ session: platform.session,
+ uid: uid,
+ server: sid,
+ platform: platform.jcChannelId,
+ role_name: giant.Core.hero.name,
+ role_level: giant.Core.hero.level,
+ server_name: giant.Core.serverVO.name
+ };
+
+ var loginCount = 0;
+ var loginMaxCount = 1;
+ console.log('pre order with url: ' + url);
+ var request = function () {
+ platform.urlRequest({
+ url: url,
+ method: 'GET',
+ data: reqData,
+ success: function (res) {
+ console.log("_getOrderId success", JSON.stringify(res));
+ if (res && res.data) {
+ // session检测失败,需要登录
+ if (res.data.sessionCheck != null) {
+ if (loginCount >= loginMaxCount) {
+ callback && callback(false, "session失效,请重新登录");
+ return;
+ }
+ loginCount++;
+
+ platform.login().then(res => {
+ request();
+ }).catch(err => {
+ callback && callback(false, "session失效,login失败,请重新登录");
+ });
+ }
+ else {
+ callback && callback(true, res.data.prepayId);
+ }
+ }
+ else {
+ callback && callback(false, "接口返回有误,请重试");
+ }
+ },
+ fail: function (err) {
+ console.log('pay with err: ' + JSON.stringify(err));
+ callback && callback(false, "接口访问失败,请重试");
+ }
+ })
+
+ }
+
+ request();
+ }
+
+ pay(obj) {
+ var orderInfo = null;
+ console.warn("pay obj", JSON.stringify(obj));
+
+ var onOrderIdResult = function (isOk, data) {
+ if (isOk) {
+ try {
+ var payData = JSON.parse(data);
+ Object.assign(payData, {count: 1});
+ orderInfo = payData;
+ realPay();
+ } catch (err) {
+ obj.fail && obj.fail({ tipMessage: '解析接口数据失败' });
+ }
+
+ }
+ else {
+ obj.fail && obj.fail({ tipMessage: data });
+ }
+ }
+
+ var realPay = function () {
+ console.log("pay orderInfo", orderInfo);
+ if (!orderInfo) return;
+ jc.plat.pay(orderInfo)
+ .then(data => {
+ if (data.errcode === 0) {
+ console.log("[quick]pay success", JSON.stringify(data));
+ obj.success && obj.success();
+ } else {
+ console.warn("pay fail", JSON.stringify(data));
+ obj.fail && obj.fail({ tipMessage: "充值失败" , err: data.errmsg });
+ }
+ })
+ .catch(err => {
+ console.warn("pay fail", JSON.stringify(err));
+ obj.fail && obj.fail({ tipMessage: "充值失败" , err: err.errmsg });
+ })
+ }
+
+ platform._getOrderId(obj.data.goodsId, obj.data.uid, obj.data.sid, onOrderIdResult);
+ }
+ concatServerList(res0, res1) {
+ res0.data.lastWorldIds = res1.data.lastWorldIds.concat(res0.data.lastWorldIds);
+ if (res1 && res1.data) {
+ if (res1.data.servers) {
+ for (let data of res1.data.servers) {
+ data.comp = 'jc';
+ res0.data.servers.push(data);
+ }
+ }
+ }
+ if (res1 && res1.data && res1.data.notice) {
+ res0.data.notice = res1.data.notice;
+ }
+ return res0;
+ }
+ requestServerList() {
+ var url = this.svrListUrl;
+ return this.getServerList(url);
+ }
+
+ getServerList(url) {
+ return new Promise((resolve, reject) => {
+ let data = {
+ openId: wxUserData.open_id
+ }
+ platform.urlRequest({
+ url: url,
+ method: 'GET',
+ data: data,
+ success: function (res) {
+ resolve(res);
+ },
+ fail: function (err) {
+ console.log('getServerList fail with url:', url);
+ resolve({data: {
+ lastWorldIds: [],
+ servers: [],
+ }});
+ }
+ })
+ })
+ }
+
+ getWxWebResRoot(configUrl) {
+ return new Promise((resolve, reject) => {
+ platform.urlRequest({
+ url: configUrl,
+ method: "GET",
+ success: function (res) {
+ let newObj = res.data;
+ constantRes.wxWebResRoot = constantRes.root + newObj.version + "/";
+ resolve();
+ }
+ });
+ });
+ }
+
+ urlRequest(obj) {
+ var url = obj.url;
+ var method = obj.method.toUpperCase();
+ var data = obj.data;
+ var postDataRaw = obj.postDataRaw === true;
+ var success = obj.success;
+ var fail = obj.fail;
+
+ var xhr = new XMLHttpRequest();
+ xhr.onreadystatechange = function () {
+ if (xhr.readyState == 4) {
+ if (xhr.status >= 200 && xhr.status < 400) {
+ var retData = xhr.responseText;
+ try {
+ retData = JSON.parse(retData);
+ success && success({
+ data: retData
+ });
+ } catch (err) {
+ fail && fail();
+ }
+
+ } else if (xhr.status >= 400) {
+ fail && fail();
+ }
+ }
+ };
+
+ xhr.onerror = function (e) {
+ fail && fail();
+ };
+
+ if (method === "POST") {
+ var dataStr = null;
+ if (postDataRaw) {
+ dataStr = data;
+ }
+ else {
+ if (data) {
+ dataStr = "";
+ for (var key in data) {
+ if (dataStr != "") {
+ dataStr += "&";
+ }
+ dataStr += key + "=" + data[key];
+ }
+ }
+ }
+ xhr.open(method, url);
+ xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+ xhr.send(dataStr);
+ } else {
+ var paramStr = "";
+ if (data) {
+ for (var key in data) {
+ if (paramStr != "") {
+ paramStr += "&";
+ }
+ paramStr += key + "=" + encodeURIComponent(data[key]);
+ }
+ if (paramStr != "") {
+ paramStr = (url.indexOf("?") == -1 ? "?" : "&") + paramStr;
+ }
+ }
+ url += paramStr;
+ url += `&_d=${Date.now()}`
+ console.log(url);
+ xhr.open(method, url);
+ xhr.send();
+ }
+ }
+
+}
+
+class GamePlatformOther {
+ constructor() {
+ this.localFileName = 'userData_';
+ }
+ checkRegisterReward(uid, sid) {
+ return new Promise((resolve, reject) => {
+ var url = jc.gg.extcfg['checkRegRewardUrl'] || platform.checkRegRewardUrl;
+ console.log('checkRegisterReward req', uid, sid, url);
+ platform.urlRequest({
+ url: url,
+ method: 'GET',
+ data: {
+ uid: uid,
+ server: sid,
+ },
+ success: function (res) {
+ console.log("checkRegisterReward res", res);
+ if (res && res.data) {
+ if (res.data.code == 1) {
+ resolve && resolve(true);
+ }
+ else {
+ resolve && resolve(false, "code = " + res.data.code + ", error = " + res.data.error);
+ }
+ }
+ else {
+ reject && reject("接口返回有误,请重试");
+ }
+ },
+ fail: function (err) {
+ reject && reject("接口访问失败,请重试");
+ }
+ });
+ });
+ }
+
+ getRegisterReward(uid, sid, name) {
+ return new Promise((resolve, reject) => {
+ var url = jc.gg.extcfg['RegRewardUrl'] || platform.regRewardUrl;
+ console.log('getRegisterReward req', uid, sid, name, url);
+
+ var count = 0;
+ var maxCount = 20;
+ var interval = 3;
+
+ var doRequest = function () {
+ platform.urlRequest({
+ url: url,
+ method: 'GET',
+ data: {
+ uid: uid,
+ server: sid,
+ name: name
+ },
+ success: function (res) {
+ console.log("getRegisterReward res", res);
+ if (res && res.data) {
+ if (res.data.code == 1) {
+ resolve && resolve(true);
+ }
+ else {
+ count++;
+ if (count <= maxCount) {
+ setTimeout(doRequest, interval * 1000);
+ }
+ else {
+ resolve && resolve(false, "code = " + res.data.code + ", error = " + res.data.error);
+ }
+ }
+ }
+ else {
+ reject && reject("接口返回有误,请重试");
+ }
+ },
+ fail: function (err) {
+ reject && reject("接口访问失败,请重试");
+ }
+ });
+ }
+
+ doRequest();
+ });
+ }
+
+ reportRoleCreate(isNew) {
+ let data = {
+ isCreateRole: isNew,
+ roleCreateTime: Date.now(),
+ serverId: giant.Core.serverVO.id,
+ serverName: giant.Core.serverVO.name,
+ userRoleId: giant.Core.hero.id,
+ userRoleName: giant.Core.hero.name,
+ userRoleBalance: giant.Core.hero.coin,
+ vipLevel: giant.Core.hero.vipLevel,
+ userRoleLevel: giant.Core.hero.level,
+ partyId: 0,
+ partyName: giant.Core.hero.camp,
+ gameRoleGender: giant.Core.hero.gender,
+ gameRolePower: giant.Core.hero.power,
+ };
+ jc.plat.reportRoleInfo(data)
+ .then(res => {})
+ .catch(err=> {})
+ }
+
+ setLocalStorage(key, value) {
+ let self = this;
+ if (key === 'lastSvr') {
+ giant.Core.externalParams.lastWordId = value;
+ }
+ if (typeof localStorage != "undefined") {
+ localStorage.setItem(self.localFileName + key, value);
+ }
+ else {
+ console.warn("localStorage is null, on set");
+ }
+ }
+
+ getLocalStorage(key) {
+ let self = this;
+ if (key === 'lastSvr' && giant.Core.externalParams.lastWordId) {
+ return giant.Core.externalParams.lastWordId;
+ }
+ if (typeof localStorage != "undefined") {
+ var dataStr = localStorage.getItem(self.localFileName + key);
+ if (key === 'lastSvr') {
+ giant.Core.externalParams.lastWordId = dataStr;
+ }
+ return dataStr;
+ }
+ else {
+ console.warn("localStorage is null, on get");
+ return null;
+ }
+ }
+
+ getLiuHaiHeight() {
+
+ var ratioScreen = egret.Capabilities.boundingClientHeight / egret.Capabilities.boundingClientWidth;
+ var ratioGameDesign = 1136 / 640;
+
+ console.log("getLiuHaiHeight", ratioScreen, ratioGameDesign);
+
+ // 跟游戏分辨率相比,相等没有刘海
+ if (Math.abs(ratioScreen - ratioGameDesign) < 0.01) {
+ return 0;
+ }
+ else {
+ // 默认刘海值50
+ return 50;
+ }
+ }
+}
+
+class PlatUserData {
+
+ constructor() {
+ this.open_id = null;
+ this.nick_name = null;
+ this.avatar_url = null;
+ this.gender = null;
+ }
+
+ getOpenId() {
+ return this.open_id;
+ }
+
+}
+
+class GameConstant {
+ constructor() {
+ this.root = "";
+ this.wxWebResRoot = "";
+ }
+}
+
+window.platform = new GamePlatform();
+window.wxUserData = new PlatUserData();
+window.constantRes = new GameConstant();