完善quick母包相关代码

This commit is contained in:
zhl 2020-12-21 20:42:39 +08:00
parent d54ec1f565
commit 5b3ff870ed
4 changed files with 209 additions and 195 deletions

View File

@ -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

View File

@ -50,19 +50,6 @@
</activity>
<!-- <activity android:name=".MainActivity"-->
<!-- android:launchMode="singleTask"-->
<!-- android:screenOrientation="portrait"-->
<!-- android:windowSoftInputMode="adjustPan|stateAlwaysVisible"-->
<!-- android:configChanges="orientation|keyboardHidden|screenSize|screenLayout"-->
<!-- android:theme="@android:style/Theme.NoTitleBar.Fullscreen">-->
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.MAIN" />-->
<!-- <category android:name="android.intent.category.LAUNCHER" />-->
<!-- </intent-filter>-->
<!-- </activity>-->
</application>
</manifest>

View File

@ -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;
@ -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());
pay(jsonObject);
} catch (JSONException e) {
e.printStackTrace();
}
} 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当乐与1881TT渠道必传值为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,6 +409,7 @@ public class MainActivity extends Activity {
(arg0, arg1) -> Sdk.getInstance().exit(MainActivity.this)).setNegativeButton("取消", null).show();
}
}
/**
* 设置通知用于监听初始化登录注销支付及退出功能的返回值
*/
@ -406,21 +434,21 @@ public class MainActivity extends Activity {
@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", (MainActivity.this).getString(R.string.polySdkSubchannel));
obj.put("polySdkSubchannel", polySdkSubchannel + "");
// 如果其他登陆过程中的错误, 则传入一个大于0的errorcode
// obj.put("errorcode", 1);
nativeAndroid.callExternalInterface("sendUidToJS", obj.toString());
@ -502,7 +530,7 @@ public class MainActivity extends Activity {
JSONObject obj = new JSONObject();
try {
obj.put("errcode", 1);
obj.put("errmsg", "支付失败:" + "pay failed,cpOrderID:" + cpOrderID + ",message: 支付取消" );
obj.put("errmsg", "支付失败:" + "pay failed,cpOrderID:" + cpOrderID + ",message: 支付取消");
nativeAndroid.callExternalInterface("payResult", obj.toString());
} catch (JSONException e) {
e.printStackTrace();

View File

@ -3,12 +3,11 @@
<string name="load_game">下载游戏资源</string>
<string name="start_game">进入游戏</string>
<string name="preload_path">preload</string>
<string name="game_url">http://local/index.html?channel=8001</string>
<string name="game_url">http://local/index.html?channel=8004</string>
<string name="local_version">1.0.0</string>
<string name="load_back">load_back</string>
<string name="launch_version">获取游戏版本</string>
<string name="launch_download">正在更新游戏资源</string>
<string name="launch_unzip">正在解压游戏资源</string>
<string name="polySdkChannel">8001</string>
<string name="polySdkSubchannel">1700</string>
<string name="polySdkChannel">8004</string>
</resources>