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);
|
// }
|
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) {
|
LogUtil.e("onRequestPermissionsResult",String.format("%d-%d", requestCode, grantResults[0]));
|
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);
|
}
|
});
|
}
|
|
}
|