diff --git a/app/build.gradle b/app/build.gradle
index c2ab244..68e6fa4 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -3,7 +3,7 @@ apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
- applicationId "com.dca.wjtx"
+ applicationId "com.hnjc.wjtx"
minSdkVersion 18
targetSdkVersion 26
versionCode 1
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 8d9cc2a..275b788 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -50,19 +50,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/java/com/hnjc/wjtx/MainActivity.java b/app/src/main/java/com/hnjc/wjtx/MainActivity.java
index 017a3f6..69cbbed 100755
--- a/app/src/main/java/com/hnjc/wjtx/MainActivity.java
+++ b/app/src/main/java/com/hnjc/wjtx/MainActivity.java
@@ -24,8 +24,10 @@ import android.widget.Toast;
import com.hnjc.wjtx.util.AssetsUtil;
import com.hnjc.wjtx.util.StorageUtil;
import com.hnjc.wjtx.util.StringUtil;
+import com.quicksdk.Extend;
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.entity.UserInfo;
@@ -40,14 +42,12 @@ import org.egret.egretnativeandroid.EgretNativeAndroid;
import org.json.JSONException;
import org.json.JSONObject;
-import java.util.UUID;
-
//Android项目发布设置详见doc目录下的README_ANDROID.md
public class MainActivity extends Activity {
private final String TAG = "MainActivity";
- private final String PRODUCT_CODE = "53944027057769834819388076876412";
- private final String PRODUCT_KEY = "70611892";
+ private final String PRODUCT_CODE = "00625148882440283287987477259719";
+ private final String PRODUCT_KEY = "87149628";
private EgretNativeAndroid nativeAndroid;
private ImageView launchScreenImageView = null;
private FrameLayout rootLayout = null;
@@ -78,7 +78,7 @@ public class MainActivity extends Activity {
nativeAndroid.config.preloadPath = preloadPath;
setExternalInterfaces();
-
+
if (!nativeAndroid.initialize(gameUrl)) {
Toast.makeText(this, "Initialize native failed.",
Toast.LENGTH_LONG).show();
@@ -99,8 +99,8 @@ public class MainActivity extends Activity {
if ((ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED)
|| (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)) {
// 没有 , 申请权限 权限数组
- ActivityCompat.requestPermissions(MainActivity.this, new String[] { Manifest.permission.READ_PHONE_STATE,
- Manifest.permission.WRITE_EXTERNAL_STORAGE }, 1);
+ ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_PHONE_STATE,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
} else {
// 有 则执行初始化
// 设置通知,用于监听初始化,登录,注销,支付及退出功能的返回值(必接)
@@ -110,21 +110,24 @@ public class MainActivity extends Activity {
}
} catch (Exception e) {
// 异常 继续申请
- ActivityCompat.requestPermissions(MainActivity.this, new String[] { Manifest.permission.READ_PHONE_STATE,
- Manifest.permission.WRITE_EXTERNAL_STORAGE }, 1);
+ ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_PHONE_STATE,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}
com.quicksdk.Sdk.getInstance().onCreate(this);
}
+
@Override
protected void onStart() {
super.onStart();
com.quicksdk.Sdk.getInstance().onStart(this);
}
+
@Override
protected void onRestart() {
super.onRestart();
com.quicksdk.Sdk.getInstance().onRestart(this);
}
+
@Override
protected void onPause() {
super.onPause();
@@ -144,16 +147,19 @@ public class MainActivity extends Activity {
super.onStop();
com.quicksdk.Sdk.getInstance().onStop(this);
}
+
@Override
protected void onDestroy() {
super.onDestroy();
com.quicksdk.Sdk.getInstance().onDestroy(this);
}
+
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
com.quicksdk.Sdk.getInstance().onNewIntent(intent);
}
+
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
@@ -195,14 +201,13 @@ public class MainActivity extends Activity {
});
nativeAndroid.setExternalInterface("setLocalStorage", message -> {
Log.d(TAG, "setLocalStorage: " + message);
- try{
+ try {
JSONObject jsonObject = new JSONObject(message);
String key = jsonObject.getString("key");
String val = jsonObject.getString("val");
SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
StorageUtil.writeString(sharedPref, key, val);
- }
- catch (JSONException e) {
+ } catch (JSONException e) {
Log.e(TAG, " onState message failed to analyze");
}
@@ -247,12 +252,11 @@ public class MainActivity extends Activity {
});
nativeAndroid.setExternalInterface("@onState", message -> {
Log.e(TAG, "Get @onState: " + message);
- try{
+ try {
JSONObject jsonObject = new JSONObject(message);
String state = jsonObject.getString("state");
handleStateEvent(state);
- }
- catch (JSONException e) {
+ } catch (JSONException e) {
Log.e(TAG, " onState message failed to analyze");
}
@@ -263,21 +267,10 @@ public class MainActivity extends Activity {
try {
JSONObject jsonObject = new JSONObject(message);
- String cpOrderId = jsonObject.getString("orderId");
- 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();
- }
+ pay(jsonObject);
} catch (JSONException e) {
e.printStackTrace();
- } catch ( Exception e ) {
+ } catch (Exception e) {
e.printStackTrace();
}
});
@@ -298,6 +291,35 @@ public class MainActivity extends Activity {
*/
nativeAndroid.setExternalInterface("reportRoleInfo", message -> {
Log.i(TAG, "Get reportRoleInfo: " + message);
+ try {
+ JSONObject data = new JSONObject(message);
+ GameRoleInfo roleInfo = new GameRoleInfo();
+ roleInfo.setServerID(data.getString("serverId"));//数字字符串,不能含有中文字符
+ roleInfo.setServerName(data.getString("serverName"));
+ roleInfo.setGameRoleName(data.getString("userRoleName"));
+ roleInfo.setGameRoleID(data.getString("userRoleId"));
+ roleInfo.setGameBalance(data.getString("userRoleBalance"));
+ roleInfo.setVipLevel(data.getString("vipLevel")); //设置当前用户vip等级,必须为数字整型字符串,请勿传"vip1"等类似字符串
+ roleInfo.setGameUserLevel(data.getString("userRoleLevel")); //设置游戏角色等级
+ roleInfo.setPartyName(data.getString("partyName"));//设置帮派名称
+ roleInfo.setRoleCreateTime(data.getString("roleCreateTime")); //UC,当乐与1881,TT渠道必传,值为10位数时间戳
+ roleInfo.setPartyId(data.getString("partyId")); //360渠道参数,设置帮派id,必须为整型字符串
+ roleInfo.setGameRoleGender(data.getString("gameRoleGender"));//360渠道参数
+ roleInfo.setGameRolePower(data.getString("gameRolePower")); //360,TT语音渠道参数,设置角色战力,必须为整型字符串
+ roleInfo.setPartyRoleId("无"); //360渠道参数,设置角色在帮派中的id
+ roleInfo.setPartyRoleName("无"); //360渠道参数,设置角色在帮派中的名称
+ roleInfo.setProfessionId("0"); //360渠道参数,设置角色职业id,必须为整型字符串
+ roleInfo.setProfession(data.getString("job")); //360渠道参数,设置角色职业名称
+ roleInfo.setFriendlist("无"); //360渠道参数,设置好友关系列表,格式请参考:http://open.quicksdk.net/help/detail/aid/190
+// 创建角色
+ if (data.getBoolean("isCreateRole")) {
+ User.getInstance().setGameRoleInfo(MainActivity.this, roleInfo, true);
+ } else {
+ User.getInstance().setGameRoleInfo(MainActivity.this, roleInfo, false);
+ }
+ } catch (JSONException e) {
+ Log.e(TAG, " onState message failed to analyze");
+ }
});
}
@@ -312,6 +334,7 @@ public class MainActivity extends Activity {
FrameLayout.LayoutParams.MATCH_PARENT);
rootLayout.addView(launchScreenImageView, params);
}
+
private void handleStateEvent(String state) {
switch (state) {
case "running":
@@ -321,6 +344,7 @@ public class MainActivity extends Activity {
Log.i(TAG, state);
}
}
+
private void hideLoadingView() {
rootLayout.removeView(launchScreenImageView);
Drawable drawable = launchScreenImageView.getDrawable();
@@ -343,32 +367,35 @@ public class MainActivity extends Activity {
finish();
}
}
+
/**
* 支付
*/
- private void pay() {
+ private void pay(JSONObject data) throws JSONException {
GameRoleInfo roleInfo = new GameRoleInfo();
- roleInfo.setServerID("1");// 服务器ID,其值必须为数字字符串
- roleInfo.setServerName("火星服务器");// 服务器名称
- roleInfo.setGameRoleName("裁决之剑");// 角色名称
- roleInfo.setGameRoleID("1121121");// 角色ID
- roleInfo.setGameUserLevel("12");// 等级
- roleInfo.setVipLevel("Vip4");// VIP等级
- roleInfo.setGameBalance("5000");// 角色现有金额
- roleInfo.setPartyName("");// 公会名字
+ roleInfo.setServerID(data.getString("serverId"));// 服务器ID,其值必须为数字字符串
+ roleInfo.setServerName(data.getString("userServer"));// 服务器名称
+ roleInfo.setGameRoleName(data.getString("userRoleName"));// 角色名称
+ roleInfo.setGameRoleID(data.getString("userRoleId"));// 角色ID
+ roleInfo.setGameUserLevel(data.getString("userLevel"));// 等级
+ roleInfo.setVipLevel(data.getString("vipLevel"));// VIP等级
+ roleInfo.setGameBalance(data.getString("diamond"));// 角色现有金额
+ roleInfo.setPartyName(data.getString("camp"));// 公会名字
+ roleInfo.setRoleCreateTime(data.getString("roleCreateTime"));
OrderInfo orderInfo = new OrderInfo();
- orderInfo.setCpOrderID(UUID.randomUUID().toString().replace("-", ""));// 游戏订单号
- orderInfo.setGoodsName("元宝");// 产品名称
+ orderInfo.setCpOrderID(data.getString("cpOrderNo"));// 游戏订单号
+ orderInfo.setGoodsName(data.getString("subject"));// 产品名称
// orderInfo.setGoodsName("月卡");
- orderInfo.setCount(10);// 购买数量,如购买"10元宝"则传10
+ orderInfo.setCount(data.getInt("count"));// 购买数量,如购买"10元宝"则传10
// orderInfo.setCount(1);// 购买数量,如购买"月卡"则传1
- orderInfo.setAmount(10); // 总金额(单位为元)
- orderInfo.setGoodsID("101"); // 产品ID,用来识别购买的产品
- orderInfo.setExtrasParams("透传参数"); // 透传参数
-
+ orderInfo.setAmount(data.getDouble("amount")); // 总金额(单位为元)
+ orderInfo.setGoodsID(data.getString("goodsId")); // 产品ID,用来识别购买的产品
+ orderInfo.setGoodsDesc(data.getString("desc"));
+ orderInfo.setExtrasParams(data.getString("extrasParams")); // 透传参数
com.quicksdk.Payment.getInstance().pay(MainActivity.this, orderInfo, roleInfo);
}
+
/**
* 退出
*/
@@ -382,161 +409,162 @@ public class MainActivity extends Activity {
(arg0, arg1) -> Sdk.getInstance().exit(MainActivity.this)).setNegativeButton("取消", null).show();
}
}
+
/**
* 设置通知,用于监听初始化,登录,注销,支付及退出功能的返回值
*/
private void initQkNotifiers() {
QuickSDK.getInstance()
- // 1.设置初始化通知(必接)
- .setInitNotifier(new InitNotifier() {
+ // 1.设置初始化通知(必接)
+ .setInitNotifier(new InitNotifier() {
- @Override
- public void onSuccess() {
- Log.i(TAG, "初始化成功");
- }
+ @Override
+ public void onSuccess() {
+ Log.i(TAG, "初始化成功");
+ }
- @Override
- public void onFailed(String message, String trace) {
- Log.i(TAG, "初始化失败:" + message);
- }
- })
- // 2.设置登录通知(必接)
- .setLoginNotifier(new LoginNotifier() {
+ @Override
+ public void onFailed(String message, String trace) {
+ Log.i(TAG, "初始化失败:" + message);
+ }
+ })
+ // 2.设置登录通知(必接)
+ .setLoginNotifier(new LoginNotifier() {
- @Override
- public void onSuccess(UserInfo userInfo) {
- if (userInfo != null) {
- Log.i(TAG, "登陆成功" + "\n\r" + "UserID: " + userInfo.getUID()
- + "\n\r" + "UserName: " + userInfo.getUserName()
- + "\n\r" + "Token: " + userInfo.getToken()
- + "\n\r" + "PlatformUid: " + userInfo.getPlatformUid()
- + "\n\r" + "ChannelToken: " + userInfo.getChannelToken()
- );
-
- // 登录成功之后,进入游戏时,需要向渠道提交用户信息
- JSONObject obj = new JSONObject();
- try {
- obj.put("openid", userInfo.getUID());
- obj.put("token", userInfo.getToken());
- obj.put("polySdkChannel", (MainActivity.this).getString(R.string.polySdkChannel));
- obj.put("polySdkSubchannel", (MainActivity.this).getString(R.string.polySdkSubchannel));
-
- // 如果其他登陆过程中的错误, 则传入一个大于0的errorcode
+ @Override
+ public void onSuccess(UserInfo userInfo) {
+ if (userInfo != null) {
+ int polySdkSubchannel = Extend.getInstance().getChannelType();
+ Log.i(TAG, "登陆成功" + "\n\r" + "UserID: " + userInfo.getUID()
+ + "\n\r" + "UserName: " + userInfo.getUserName()
+ + "\n\r" + "Token: " + userInfo.getToken()
+ + "\n\r" + "PlatformUid: " + userInfo.getPlatformUid()
+ + "\n\r" + "ChannelToken: " + userInfo.getChannelToken()
+ + "\n\r" + "Extend.getChannelType: " + polySdkSubchannel
+ );
+ // 登录成功之后,进入游戏时,需要向渠道提交用户信息
+ JSONObject obj = new JSONObject();
+ try {
+ obj.put("openid", userInfo.getUID());
+ obj.put("token", userInfo.getToken());
+ obj.put("polySdkChannel", (MainActivity.this).getString(R.string.polySdkChannel));
+ obj.put("polySdkSubchannel", polySdkSubchannel + "");
+ // 如果其他登陆过程中的错误, 则传入一个大于0的errorcode
// obj.put("errorcode", 1);
- nativeAndroid.callExternalInterface("sendUidToJS", obj.toString());
- } catch (JSONException e) {
- e.printStackTrace();
- nativeAndroid.callExternalInterface("loginCancel", "");
+ nativeAndroid.callExternalInterface("sendUidToJS", obj.toString());
+ } catch (JSONException e) {
+ e.printStackTrace();
+ nativeAndroid.callExternalInterface("loginCancel", "");
+ }
}
}
- }
- @Override
- public void onCancel() {
- Log.i(TAG, "取消登陆");
- nativeAndroid.callExternalInterface("loginCancel", "");
- }
-
- @Override
- public void onFailed(final String message, String trace) {
- Log.i(TAG, "登陆失败:" + message);
- nativeAndroid.callExternalInterface("loginCancel", "");
- }
-
- })
- // 3.设置注销通知(必接)
- .setLogoutNotifier(new LogoutNotifier() {
-
- @Override
- public void onSuccess() {
- Log.i(TAG, "注销成功");
- nativeAndroid.callExternalInterface("loginOut", "");
- }
-
- @Override
- public void onFailed(String message, String trace) {
- Log.i(TAG, "注销失败:" + message);
- }
- })
- // 4.设置切换账号通知(必接)
- .setSwitchAccountNotifier(new SwitchAccountNotifier() {
-
- @Override
- public void onSuccess(UserInfo userInfo) {
- if (userInfo != null) {
- Log.i(TAG, "切换账号成功" + "\n\r" + "UserID: " + userInfo.getUID() + "\n\r" + "UserName: " + userInfo.getUserName() + "\n\r"
- + "Token: " + userInfo.getToken());
- nativeAndroid.callExternalInterface("changeAccount", "");
+ @Override
+ public void onCancel() {
+ Log.i(TAG, "取消登陆");
+ nativeAndroid.callExternalInterface("loginCancel", "");
}
- }
- @Override
- public void onFailed(String message, String trace) {
- Log.i(TAG, "切换账号失败:" + message);
- }
-
- @Override
- public void onCancel() {
- Log.i(TAG, "取消切换账号");
- }
- })
- // 5.设置支付通知(必接)
- .setPayNotifier(new PayNotifier() {
-
- @Override
- public void onSuccess(String sdkOrderID, String cpOrderID, String extrasParams) {
- Log.i(TAG, "支付成功,sdkOrderID:" + sdkOrderID + ",cpOrderID:" + cpOrderID);
- JSONObject obj = new JSONObject();
- try {
- obj.put("errcode", 0);
- obj.put("errmsg", "");
- nativeAndroid.callExternalInterface("payResult", obj.toString());
- } catch (JSONException e) {
- e.printStackTrace();
+ @Override
+ public void onFailed(final String message, String trace) {
+ Log.i(TAG, "登陆失败:" + message);
+ nativeAndroid.callExternalInterface("loginCancel", "");
}
- }
- @Override
- public void onCancel(String cpOrderID) {
- Log.i(TAG, "支付取消,cpOrderID:" + cpOrderID);
- JSONObject obj = new JSONObject();
- try {
- obj.put("errcode", 1);
- obj.put("errmsg", "支付失败:" + "pay failed,cpOrderID:" + cpOrderID + ",message: 支付取消" );
- nativeAndroid.callExternalInterface("payResult", obj.toString());
- } catch (JSONException e) {
- e.printStackTrace();
+ })
+ // 3.设置注销通知(必接)
+ .setLogoutNotifier(new LogoutNotifier() {
+
+ @Override
+ public void onSuccess() {
+ Log.i(TAG, "注销成功");
+ nativeAndroid.callExternalInterface("loginOut", "");
}
- }
- @Override
- public void onFailed(String cpOrderID, String message, String trace) {
- Log.i(TAG, "支付失败:" + "pay failed,cpOrderID:" + cpOrderID + ",message:" + message);
- JSONObject obj = new JSONObject();
- try {
- obj.put("errcode", 1);
- obj.put("errmsg", "支付失败:" + "pay failed,cpOrderID:" + cpOrderID + ",message:" + message);
- nativeAndroid.callExternalInterface("payResult", obj.toString());
- } catch (JSONException e) {
- e.printStackTrace();
+ @Override
+ public void onFailed(String message, String trace) {
+ Log.i(TAG, "注销失败:" + message);
}
- }
- })
- // 6.设置退出通知(必接)
- .setExitNotifier(new ExitNotifier() {
+ })
+ // 4.设置切换账号通知(必接)
+ .setSwitchAccountNotifier(new SwitchAccountNotifier() {
- @Override
- public void onSuccess() {
- // 进行游戏本身的退出操作,下面的finish()只是示例
- nativeAndroid.exitGame();
- finish();
- }
+ @Override
+ public void onSuccess(UserInfo userInfo) {
+ if (userInfo != null) {
+ Log.i(TAG, "切换账号成功" + "\n\r" + "UserID: " + userInfo.getUID() + "\n\r" + "UserName: " + userInfo.getUserName() + "\n\r"
+ + "Token: " + userInfo.getToken());
+ nativeAndroid.callExternalInterface("changeAccount", "");
+ }
+ }
- @Override
- public void onFailed(String message, String trace) {
- Log.i(TAG, "退出失败:" + message);
- }
- });
+ @Override
+ public void onFailed(String message, String trace) {
+ Log.i(TAG, "切换账号失败:" + message);
+ }
+
+ @Override
+ public void onCancel() {
+ Log.i(TAG, "取消切换账号");
+ }
+ })
+ // 5.设置支付通知(必接)
+ .setPayNotifier(new PayNotifier() {
+
+ @Override
+ public void onSuccess(String sdkOrderID, String cpOrderID, String extrasParams) {
+ Log.i(TAG, "支付成功,sdkOrderID:" + sdkOrderID + ",cpOrderID:" + cpOrderID);
+ JSONObject obj = new JSONObject();
+ try {
+ obj.put("errcode", 0);
+ obj.put("errmsg", "");
+ nativeAndroid.callExternalInterface("payResult", obj.toString());
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onCancel(String cpOrderID) {
+ Log.i(TAG, "支付取消,cpOrderID:" + cpOrderID);
+ JSONObject obj = new JSONObject();
+ try {
+ obj.put("errcode", 1);
+ obj.put("errmsg", "支付失败:" + "pay failed,cpOrderID:" + cpOrderID + ",message: 支付取消");
+ nativeAndroid.callExternalInterface("payResult", obj.toString());
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onFailed(String cpOrderID, String message, String trace) {
+ Log.i(TAG, "支付失败:" + "pay failed,cpOrderID:" + cpOrderID + ",message:" + message);
+ JSONObject obj = new JSONObject();
+ try {
+ obj.put("errcode", 1);
+ obj.put("errmsg", "支付失败:" + "pay failed,cpOrderID:" + cpOrderID + ",message:" + message);
+ nativeAndroid.callExternalInterface("payResult", obj.toString());
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+ })
+ // 6.设置退出通知(必接)
+ .setExitNotifier(new ExitNotifier() {
+
+ @Override
+ public void onSuccess() {
+ // 进行游戏本身的退出操作,下面的finish()只是示例
+ nativeAndroid.exitGame();
+ finish();
+ }
+
+ @Override
+ public void onFailed(String message, String trace) {
+ Log.i(TAG, "退出失败:" + message);
+ }
+ });
}
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2a86ddb..a46b8f1 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -3,12 +3,11 @@
下载游戏资源
进入游戏
preload
- http://local/index.html?channel=8001
+ http://local/index.html?channel=8004
1.0.0
load_back
获取游戏版本
正在更新游戏资源
正在解压游戏资源
- 8001
- 1700
+ 8004