hch
2022-07-22 9835d457641448a1e8fa2237c6b6fe1845c913f4
0312 小7sdk
3个文件已修改
11个文件已添加
486 ■■■■■ 已修改文件
SdkProject/channel/x7bt5/java/com/secondworld/sdk/BtGameApp.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/gradle.properties 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/build.gradle 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestPermissionStart.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/plugins/x7sm/deps.gradle 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/plugins/x7sm/java/com/secondworld/sdk/QuickSdkMgr.java 244 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/plugins/x7sm/java/com/secondworld/sdk/SplashActivity.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/plugins/x7sm/java/com/secondworld/sdk/command/CmdCreateRole.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/plugins/x7sm/java/com/secondworld/sdk/command/CmdPayFinished.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/plugins/x7sm/java/com/secondworld/sdk/command/CmdPlatformLogin.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/plugins/x7sm/java/com/secondworld/sdk/command/CmdPlatformLogout.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/plugins/x7sm/java/com/secondworld/sdk/command/CmdPlatformPay.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/plugins/x7sm/java/com/secondworld/sdk/command/CmdRoleLevelUp.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/plugins/x7sm/java/com/secondworld/sdk/command/CmdRoleLogin.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/x7bt5/java/com/secondworld/sdk/BtGameApp.java
New file
@@ -0,0 +1,15 @@
package com.secondworld.sdk;
import android.app.Application;
public class BtGameApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        GameAppProxy.create(this, new BtGamePlatform());
        GameActivity.registerProxy(BtGameMain.class);GameActivity.registerProxy(BtGameMain.class);
    }
}
SdkProject/gradle.properties
@@ -18,4 +18,4 @@
## Automatically convert third-party libraries to use AndroidX
android.enableJetifier=false
#当前构建的渠道名称
CHANNEL_NAME=qkbt52
CHANNEL_NAME=x7bt5
SdkProject/library/build.gradle
@@ -32,12 +32,12 @@
def channelJavaFiles = getAllFiles(new ArrayList<File>(), "${channelPath}/java")
android {
    compileSdkVersion 29
    compileSdkVersion 30
    buildToolsVersion "28.0.1"
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 29
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"
SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestPermissionStart.java
@@ -1,6 +1,5 @@
package com.secondworld.sdk.command;
import com.quicksdk.User;
import com.secondworld.sdk.GameActivityProxy;
import com.secondworld.sdk.PermissionManager;
import com.secondworld.sdk.QuickSdkMgr;
SdkProject/plugins/x7sm/deps.gradle
New file
@@ -0,0 +1,3 @@
dependencies {
}
SdkProject/plugins/x7sm/java/com/secondworld/sdk/QuickSdkMgr.java
New file
@@ -0,0 +1,244 @@
package com.secondworld.sdk;
import android.Manifest;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.provider.Settings;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.widget.Toast;
import com.secondworld.sdk.utils.CodeA2U;
import com.secondworld.sdk.utils.LogUtil;
import com.secondworld.sdk.utils.RequestCode;
import com.smwl.smsdk.abstrat.SMInitListener;
import com.smwl.smsdk.abstrat.SMLoginListener;
import com.smwl.smsdk.abstrat.SMPayListener;
import com.smwl.smsdk.app.SMPlatformManager;
import com.smwl.smsdk.bean.PayInfo;
import com.smwl.smsdk.bean.RoleInfo;
import com.smwl.smsdk.bean.SMUserInfo;
import com.unity3d.player.UnityPlayer;
import com.secondworld.sdk.PlatformDiff;
import org.json.JSONException;
import org.json.JSONObject;
public class QuickSdkMgr extends PlatformSdkMgr {
    public static QuickSdkMgr I = new QuickSdkMgr();
    String productCode;
    String productKey;
    int REQUEST_RECORD_PERMISSION_SETTING = 110;
    private boolean hasPermissions(Activity activity) {
        return (ContextCompat.checkSelfPermission(activity,
                Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED)
                && (ContextCompat.checkSelfPermission(activity,
                Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED);
    }
    public void requestPermissions(Activity activity) {
        try {
            // check权限
            if (!hasPermissions(activity)) {
                // 没有则申请权限
                ActivityCompat.requestPermissions(activity, new String[]{
                        Manifest.permission.READ_PHONE_STATE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, RequestCode.QUICK);
            } else {
                QuickSdkMgr.I.register(PlatformDiff.I.platformProductCode(), PlatformDiff.I.platformProductKey());
                QuickSdkMgr.I.init(activity);
            }
        } catch (Exception e) {
            //QuickSdkMgr.I.init(activity);
            ActivityCompat.requestPermissions(activity, new String[]{
                    Manifest.permission.READ_PHONE_STATE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, RequestCode.QUICK);
        }
    }
    public void onRequestPermissionsResult(Activity activity, int requestCode, int[] grantResults) {
        if (requestCode != RequestCode.QUICK) return;
        if (hasPermissions(activity)) {
            //申请成功
            QuickSdkMgr.I.register(PlatformDiff.I.platformProductCode(), PlatformDiff.I.platformProductKey());
            QuickSdkMgr.I.init(activity);
            return;
        }
        final AlertDialog.Builder normalDialog = new AlertDialog.Builder(activity);
        normalDialog.setTitle("权限设置");
        normalDialog.setMessage("游戏需要部分权限才能正常运行,请前往设置中打开电话权限与存储权限");
        normalDialog.setPositiveButton("前往设置", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                Uri uri = Uri.fromParts("package", activity.getPackageName(), null);
                intent.setData(uri);
                activity.startActivityForResult(intent, REQUEST_RECORD_PERMISSION_SETTING);
                dialog.dismiss();
            }
        });
        normalDialog.setNegativeButton("退出", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                GameAppProxy.appExit();
            }
        });
        // 显示
        normalDialog.show();
    }
    public void onActivityResult(Activity activity, int requestCode) {
        if (requestCode == REQUEST_RECORD_PERMISSION_SETTING)
            requestPermissions(activity);
    }
    public void init(Activity activity) {
        sdkInitState = SdkInitState.LOADING;
    }
    public void login() {
        switch (sdkInitState) {
            case FAILED:
            case UNKNOWN: {
                if (GameActivityProxy.I.activity == null)
                    return;
                if (hasPermissions(GameActivityProxy.I.activity)) {
                    Toast.makeText(GameAppProxy.app, "异常请重启游戏", Toast.LENGTH_LONG).show();
                }
                break;
            }
            case SUCCEED: {
                GameActivityProxy.I.activity.runOnUiThread(new Runnable()
                {
                    @Override
                    public void run()
                    {
                        //用户登陆进入游戏和用户登出退出游戏的回调
                        SMPlatformManager.getInstance ().login (GameActivityProxy.I.activity, new SMLoginListener() {
                            @Override
                            public void onLoginSuccess(SMUserInfo loginInfo) {
                                //客户端登录成功后,会通过如下方式得到token值,游戏客户端传token给自己服务器
                                LogUtil.e("SdkManager", "登录成功");
                                try {
                                    args.clear();
                                    JSONObject info = new JSONObject();
                                    info.put("token", loginInfo.getTokenkey());
                                    args.put("info", info);
                                    UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLoginOk, args);
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                    LogUtil.e("SdkManager 登录成功", e);
                                }
                            }
                            @Override
                            public void onLoginFailed(String reason) {
                                LogUtil.e("SdkManager", "登录失败:");
                                UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLoginFail);
                            }
                            @Override
                            public void onLoginCancell(String reason) {
                                //登陆取消
                                LogUtil.e("SdkManager", "登录失败:");
                                UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLoginFail);
                            }
                            @Override
                            public void onLogoutSuccess() {
                                //登出的前提是:已经登录成功了
                                UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLogoutOk);
                            }
                        });
                    }
                });
                break;
            }
            case LOADING: {
                Toast.makeText(GameAppProxy.app, "正在初始化中,请稍等!", Toast.LENGTH_LONG).show();
                break;
            }
        }
    }
    public void setGameRoleInfo(RoleInfo roleInfo) {
        if (GameActivityProxy.I.activity == null)
            return;
        GameActivityProxy.I.activity.runOnUiThread(new Runnable()
        {
            @Override
            public void run()
            {
                SMPlatformManager.getInstance().smAfterChooseRoleSendInfo(GameActivityProxy.I.activity, roleInfo);
            }
        });
    }
    public void pay(PayInfo payInfo) {
        if (GameActivityProxy.I.activity == null)
            return;
        GameActivityProxy.I.activity.runOnUiThread(new Runnable()
        {
            @Override
            public void run()
            {
                SMPlatformManager.getInstance ().Pay (GameActivityProxy.I.activity, payInfo, new SMPayListener() {
                    @Override
                    public void onPaySuccess(Object obj) {
                        //支付成功
                        //sdkOrderID:quick订单号 cpOrderID:游戏订单号
                        UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformPayOk);
                    }
                    @Override
                    public void onPayFailed(Object obj) {
                        //支付失败
                        UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformPayFail);
                    }
                    @Override
                    public void onPayCancell(Object obj) {
                        //支付取消
                        UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformPayCancel);
                    }
                });
            }
        });
    }
    public void register(String productCode, String productKey) {
        this.productCode = productCode;
        this.productKey = productKey;
        //程序的入口执行初始化操作:一般放在游戏入口的activity里面用主线程调用
        SMPlatformManager.getInstance().init(GameActivityProxy.I.activity,
                productCode, new SMInitListener() {
                @Override
                public void onSuccess() {
                    sdkInitState = SdkInitState.SUCCEED;
                    LogUtil.debug("SdkManager", "初始化成功");
                    UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformInitOk);
                }
                @Override
                public void onFail(String reason) {
                    //初始化失败
                    sdkInitState = SdkInitState.FAILED;
                    LogUtil.e("SdkManager", "初始化失败 msg:" + reason);
                    UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformInitFail);
                }
            });
    }
}
SdkProject/plugins/x7sm/java/com/secondworld/sdk/SplashActivity.java
New file
@@ -0,0 +1,30 @@
package com.secondworld.sdk;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
public class SplashActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.x7_act_splash);
        //修复切换到后台后点击图标重新启动的问题
        if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
            finish();
            return;
        }
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent intent = new Intent(SplashActivity.this, GameActivity.class);
                startActivity(intent);
                finish();
            }
        }, 2000);
    }
}
SdkProject/plugins/x7sm/java/com/secondworld/sdk/command/CmdCreateRole.java
New file
@@ -0,0 +1,30 @@
package com.secondworld.sdk.command;
import com.secondworld.sdk.QuickSdkMgr;
import com.secondworld.sdk.utils.CodeU2A;
import com.smwl.smsdk.bean.RoleInfo;
import org.json.JSONObject;
public class CmdCreateRole implements ICommand {
    @Override
    public int getCode() {
        return CodeU2A.CreateRole;
    }
    @Override
    public void process(JSONObject json) throws Exception {
        RoleInfo roleInfo = new RoleInfo();
        roleInfo.setGame_area(json.getString("sid"));
        roleInfo.setGame_area_id(json.getString("sid"));
        roleInfo.setGame_guid(json.getString("game_guid"));
        roleInfo.setGame_role_id(json.getString("roleID"));
        roleInfo.setGame_role_name(json.getString("roleName").trim().replace(" ", ""));
        roleInfo.setRoleLevel(json.getString("level"));
        roleInfo.setRoleCE("-1");
        roleInfo.setRoleStage("-1");
        roleInfo.setRoleRechargeAmount("-1");
        QuickSdkMgr.I.setGameRoleInfo(roleInfo);
    }
}
SdkProject/plugins/x7sm/java/com/secondworld/sdk/command/CmdPayFinished.java
New file
@@ -0,0 +1,16 @@
package com.secondworld.sdk.command;
import com.secondworld.sdk.utils.CodeU2A;
import org.json.JSONObject;
public class CmdPayFinished implements  ICommand{
    @Override
    public int getCode() {
        return CodeU2A.PayFinished;
    }
    @Override
    public void process(JSONObject json) throws Exception {
    }
}
SdkProject/plugins/x7sm/java/com/secondworld/sdk/command/CmdPlatformLogin.java
New file
@@ -0,0 +1,18 @@
package com.secondworld.sdk.command;
import com.secondworld.sdk.QuickSdkMgr;
import com.secondworld.sdk.utils.CodeU2A;
import org.json.JSONObject;
public class CmdPlatformLogin implements ICommand {
    @Override
    public int getCode() {
        return CodeU2A.PlatformLogin;
    }
    @Override
    public void process(JSONObject json) throws Exception {
        QuickSdkMgr.I.login();
    }
}
SdkProject/plugins/x7sm/java/com/secondworld/sdk/command/CmdPlatformLogout.java
New file
@@ -0,0 +1,19 @@
package com.secondworld.sdk.command;
import com.secondworld.sdk.QuickSdkMgr;
import com.secondworld.sdk.utils.CodeU2A;
import com.smwl.smsdk.app.SMPlatformManager;
import org.json.JSONObject;
public class CmdPlatformLogout implements ICommand {
    @Override
    public int getCode() {
        return CodeU2A.PlatformLogout;
    }
    @Override
    public void process(JSONObject json) throws Exception {
        SMPlatformManager.getInstance().smExitCurrent();
    }
}
SdkProject/plugins/x7sm/java/com/secondworld/sdk/command/CmdPlatformPay.java
New file
@@ -0,0 +1,46 @@
package com.secondworld.sdk.command;
import android.widget.Toast;
import com.secondworld.sdk.GameAppProxy;
import com.secondworld.sdk.QuickSdkMgr;
import com.secondworld.sdk.utils.CodeU2A;
import com.smwl.smsdk.bean.PayInfo;
import org.json.JSONObject;
import java.net.URLEncoder;
public class CmdPlatformPay implements ICommand {
    @Override
    public int getCode() {
        return CodeU2A.PlatformPay;
    }
    @Override
    public void process(JSONObject json) throws Exception {
        JSONObject extraData = new JSONObject();
        extraData.put("appid", GameAppProxy.appId);
        extraData.put("cpinfo", json.getString("cpInfo"));
        extraData.put("cporderid", json.getString("orderId"));
        final PayInfo mPayInfo = new PayInfo ();
        mPayInfo.setExtends_info_data (URLEncoder.encode(extraData.toString(), "utf-8").replace(" ",""));
        mPayInfo.setGame_level (json.getString("level"));
        mPayInfo.setGame_role_id (json.getString("roleID"));
        mPayInfo.setGame_role_name (json.getString("roleName").trim().replace(" ", ""));
        // 测试账号:x7demo 密码:123456(选择小号1进入游戏)
        mPayInfo.setGame_area (json.getString("sid"));
        // 测试账号:x7demo 密码:123456(选择小号1进入游戏) 小号名称:小号1  :对应的game_guid:2018642
        mPayInfo.setGame_guid (json.getString("game_guid"));
        mPayInfo.setGame_orderid (json.getString("orderId"));
        mPayInfo.setGame_price (String.format("%.2f", Float.parseFloat(json.getString("mount"))));
        mPayInfo.setNotify_id (json.getString("notify_id"));
        mPayInfo.setSubject (json.getString("title").replace(" ",""));
        mPayInfo.setGame_sign (json.getString("game_sign"));
        QuickSdkMgr.I.pay(mPayInfo);
    }
}
SdkProject/plugins/x7sm/java/com/secondworld/sdk/command/CmdRoleLevelUp.java
New file
@@ -0,0 +1,29 @@
package com.secondworld.sdk.command;
import com.secondworld.sdk.QuickSdkMgr;
import com.secondworld.sdk.utils.CodeU2A;
import com.smwl.smsdk.bean.RoleInfo;
import org.json.JSONObject;
public class CmdRoleLevelUp implements ICommand {
    @Override
    public int getCode() {
        return CodeU2A.RoleLevelUp;
    }
    @Override
    public void process(JSONObject json) throws Exception {
        RoleInfo roleInfo = new RoleInfo();
        roleInfo.setGame_area(json.getString("sid"));
        roleInfo.setGame_area_id(json.getString("sid"));
        roleInfo.setGame_guid(json.getString("game_guid"));
        roleInfo.setGame_role_id(json.getString("roleID"));
        roleInfo.setGame_role_name(json.getString("roleName").trim().replace(" ", ""));
        roleInfo.setRoleLevel(json.getString("level"));
        roleInfo.setRoleCE("-1");
        roleInfo.setRoleStage("-1");
        roleInfo.setRoleRechargeAmount("-1");
        QuickSdkMgr.I.setGameRoleInfo(roleInfo);
    }
}
SdkProject/plugins/x7sm/java/com/secondworld/sdk/command/CmdRoleLogin.java
New file
@@ -0,0 +1,29 @@
package com.secondworld.sdk.command;
import com.secondworld.sdk.QuickSdkMgr;
import com.secondworld.sdk.utils.CodeU2A;
import com.smwl.smsdk.bean.RoleInfo;
import org.json.JSONObject;
public class CmdRoleLogin implements ICommand {
    @Override
    public int getCode() {
        return CodeU2A.RoleLogin;
    }
    @Override
    public void process(JSONObject json) throws Exception {
        RoleInfo roleInfo = new RoleInfo();
        roleInfo.setGame_area(json.getString("sid"));
        roleInfo.setGame_area_id(json.getString("sid"));
        roleInfo.setGame_guid(json.getString("game_guid"));
        roleInfo.setGame_role_id(json.getString("roleID"));
        roleInfo.setGame_role_name(json.getString("roleName").trim().replace(" ", ""));
        roleInfo.setRoleLevel(json.getString("level"));
        roleInfo.setRoleCE("-1");
        roleInfo.setRoleStage("-1");
        roleInfo.setRoleRechargeAmount("-1");
        QuickSdkMgr.I.setGameRoleInfo(roleInfo);
    }
}