lwb
2021-01-21 d96addbbe88584db54bd83d590eb019877908f16
9527 增加权限请求
14个文件已修改
1个文件已添加
174 ■■■■■ 已修改文件
Channel/Android/gtgame/debug/libs/library-debug-gtgame.aar 补丁 | 查看 | 原始文档 | blame | 历史
Channel/Android/gtgame/release/libs/library-release-gtgame.aar 补丁 | 查看 | 原始文档 | blame | 历史
Channel/Android/test/debug/libs/library-debug-test.aar 补丁 | 查看 | 原始文档 | blame | 历史
Channel/Android/test/release/libs/library-release-test.aar 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/app/src/main/java/com/secondworld/demo/MainActivity.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/GTGame/java/com/secondworld/sdk/MySdkMgr.java 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/AndroidManifest.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/sdk/GameActivityProxy.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/sdk/PermissionManager.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/sdk/UnityMsgHandler.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdInit.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestPermission.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/sdk/utils/BatteryUtil.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeA2U.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/sdk/utils/FileUtil.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Channel/Android/gtgame/debug/libs/library-debug-gtgame.aar
Binary files differ
Channel/Android/gtgame/release/libs/library-release-gtgame.aar
Binary files differ
Channel/Android/test/debug/libs/library-debug-test.aar
Binary files differ
Channel/Android/test/release/libs/library-release-test.aar
Binary files differ
SdkProject/app/src/main/java/com/secondworld/demo/MainActivity.java
@@ -73,7 +73,14 @@
        }));
        findViewById(R.id.btnA).setOnClickListener(v -> {
            unityMessage(CodeU2A.GoToReview);
            JSONObject json = new JSONObject();
            try {
                json.put("code", CodeU2A.RequestPermission);
                json.put("permission", "android.permission.RECORD_AUDIO");
            } catch (JSONException e) {
                e.printStackTrace();
            }
            UnityMsgHandler.onUnityMessage(json.toString());
        });
        findViewById(R.id.btnB).setOnClickListener(v -> {
SdkProject/channel/GTGame/java/com/secondworld/sdk/MySdkMgr.java
@@ -59,18 +59,14 @@
            public void onSuccess() {
                sdkInitState = SdkInitState.SUCCEED;
                LogUtil.debug("SdkManager", "初始化成功");
                args.clear();
                args.put("code", CodeA2U.PlatformInitOk);
                UnityMsgHandler.sendMessageToUnity(args);
                UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformInitOk);
            }
            @Override
            public void onError(String msg) {
                sdkInitState = SdkInitState.FAILED;
                LogUtil.e("SdkManager", "初始化失败:" + msg);
                args.clear();
                args.put("code", CodeA2U.PlatformInitFail);
                UnityMsgHandler.sendMessageToUnity(args);
                UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformInitFail);
            }
        });
@@ -85,10 +81,8 @@
                    info.put("account", SdkManager.getInstance().getUid());
                    info.put("game_id", SdkManager.getInstance().getGameId());
                    info.put("session_id", SdkManager.getInstance().getSessionId());
                    args.put("code", CodeA2U.PlatformLoginOk);
                    args.put("info", info);
                    UnityMsgHandler.sendMessageToUnity(args);
                    UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLoginOk,args);
                } catch (JSONException e) {
                    e.printStackTrace();
                    LogUtil.e("SdkManager 登录成功", e);
@@ -100,24 +94,19 @@
            public void onSuccess(Boolean isNewReg, String reg_type) {
                LogUtil.e("SdkManager", "注册成功" + " isNewReg:" + isNewReg + "  type:" + reg_type);
                args.clear();
                args.put("code", CodeA2U.PlatformRegisterOk);
                args.put("reg_type", reg_type);
                UnityMsgHandler.sendMessageToUnity(args);
                UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformRegisterOk,args);
            }
            @Override
            public void onError(String s) {
                LogUtil.e("SdkManager", "登录失败:" + s);
                args.clear();
                args.put("code", CodeA2U.PlatformLoginFail);
                UnityMsgHandler.sendMessageToUnity(args);
                UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLoginFail);
            }
            @Override
            public void onCancel() {
                args.clear();
                args.put("code", CodeA2U.PlatformLoginFail);
                UnityMsgHandler.sendMessageToUnity(args);
                UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLoginFail);
            }
        });
@@ -146,9 +135,7 @@
            @Override
            public void onSuccess() {
                //注销成功,需要把游戏切换回登陆前的场景,并重新弹出登录框等操作
                args.clear();
                args.put("code", CodeA2U.PlatformLogoutOk);
                UnityMsgHandler.sendMessageToUnity(args);
                UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLogoutOk);
            }
            @Override
@@ -189,27 +176,24 @@
            @Override
            public void onSuccess(String type) {
                Map<String, Object> args = new HashMap<>();
                args.put("code", CodeA2U.ShareState);
                args.put("state", CallBackState.Success);
                UnityMsgHandler.sendMessageToUnity(args);
                UnityMsgHandler.sendMessageToUnity(CodeA2U.ShareState,args);
                LogUtil.debug("分享回调", "onSuccess:" + type);
            }
            @Override
            public void onError(String type, String msg) {
                Map<String, Object> args = new HashMap<>();
                args.put("code", CodeA2U.ShareState);
                args.put("state", CallBackState.Error);
                UnityMsgHandler.sendMessageToUnity(args);
                UnityMsgHandler.sendMessageToUnity(CodeA2U.ShareState,args);
                LogUtil.debug("分享回调", "type:" + type + ";msg:" + msg);
            }
            @Override
            public void onCancel(String type) {
                Map<String, Object> args = new HashMap<>();
                args.put("code", CodeA2U.ShareState);
                args.put("state", CallBackState.Cancel);
                UnityMsgHandler.sendMessageToUnity(args);
                UnityMsgHandler.sendMessageToUnity( CodeA2U.ShareState,args);
                LogUtil.debug("分享回调", type + ":onCancel");
            }
        });
@@ -219,27 +203,24 @@
            @Override
            public void onSuccess() {
                Map<String, Object> args = new HashMap<>();
                args.put("code", CodeA2U.ReviewState);
                args.put("state", CallBackState.Success);
                UnityMsgHandler.sendMessageToUnity(args);
                UnityMsgHandler.sendMessageToUnity(CodeA2U.ReviewState,args);
                LogUtil.debug("评分回调", "成功");
            }
            @Override
            public void onError(String s) {
                Map<String, Object> args = new HashMap<>();
                args.put("code", CodeA2U.ReviewState);
                args.put("state", CallBackState.Error);
                UnityMsgHandler.sendMessageToUnity(args);
                UnityMsgHandler.sendMessageToUnity(CodeA2U.ReviewState,args);
                LogUtil.debug("评分回调", "失败:" + s);
            }
            @Override
            public void onCancel() {
                Map<String, Object> args = new HashMap<>();
                args.put("code", CodeA2U.ReviewState);
                args.put("state", CallBackState.Cancel);
                UnityMsgHandler.sendMessageToUnity(args);
                UnityMsgHandler.sendMessageToUnity(CodeA2U.ReviewState,args);
                LogUtil.debug("评分回调", "取消");
            }
        });
SdkProject/library/src/main/AndroidManifest.xml
@@ -9,6 +9,8 @@
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- 获取MAC地址-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!-- 录音 -->
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <application
        android:name="com.secondworld.sdk.GameApp"
SdkProject/library/src/main/java/com/secondworld/sdk/GameActivityProxy.java
@@ -35,12 +35,12 @@
    }
    public void onDestroy() {
        activity=null;
        activity = null;
        I = null;
    }
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        PermissionManager.I.onRequestPermissionsResult(activity,requestCode, permissions, grantResults);
    }
}
SdkProject/library/src/main/java/com/secondworld/sdk/PermissionManager.java
New file
@@ -0,0 +1,60 @@
package com.secondworld.sdk;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v4.content.PermissionChecker;
import com.secondworld.sdk.utils.CallBackState;
import com.secondworld.sdk.utils.CodeA2U;
import java.util.HashMap;
import java.util.Map;
/**
 * 权限管理
 */
public class PermissionManager {
    public static PermissionManager I = new PermissionManager();
    private static final int  REQUEST_CODE = 9527;
    /**
     * 查询是否有权限
     */
    public boolean hasPermission(String permission) {
        return ContextCompat.checkSelfPermission(GameApp.I, permission) == PackageManager.PERMISSION_GRANTED
                && PermissionChecker.checkSelfPermission(GameApp.I, permission) == PackageManager.PERMISSION_GRANTED;
    }
    /**
     * 请求权限
     */
    public void requestPermissions(String permission) {
        if (GameActivityProxy.I == null || GameActivityProxy.I.activity == null)
            return;
        ActivityCompat.requestPermissions(GameActivityProxy.I.activity, new String[]{permission}, REQUEST_CODE);
    }
    public void onRequestPermissionsResult(Activity activity, int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if (activity == null||permissions.length==0||requestCode!=REQUEST_CODE)
            return;
        Map<String, Object> map = new HashMap<>();
        map.put("permission",permissions[0]);
        if (hasPermission(permissions[0])) {
            map.put("state", CallBackState.Success);
        } else {
            if (ActivityCompat.shouldShowRequestPermissionRationale(activity, permissions[0])) {//用户拒绝,未勾选【不再提示】
                map.put("state", CallBackState.Cancel);
            } else {//用户拒绝且勾选了【不再提示】
                map.put("state", CallBackState.Error);
            }
        }
        UnityMsgHandler.sendMessageToUnity(CodeA2U.PermissionCallBack, map);
    }
}
SdkProject/library/src/main/java/com/secondworld/sdk/UnityMsgHandler.java
@@ -87,21 +87,19 @@
    }
    public static void sendMessageToUnity(int code) {
        Map<String, Object> args = new HashMap<>();
        args.put("code", code);
        UnityMsgHandler.sendMessageToUnity(args);
        UnityMsgHandler.sendMessageToUnity(code,null);
    }
    /**
     * 发送消息到unity
     *
     * @param jsonMap
     * @param args
     */
    public static void sendMessageToUnity(Map<String, Object> jsonMap) {
        if (jsonMap == null || jsonMap.isEmpty()) {
            return;
        }
        JSONObject jsonObject = new JSONObject(jsonMap);
    public static void sendMessageToUnity(int code, Map<String, Object> args) {
        if (args == null)
            args = new HashMap<>();
        args.put("code", code);
        JSONObject jsonObject = new JSONObject(args);
        if (GameApp.I.isDemo()) {
            LogUtil.debug("发送消息到unity", jsonObject.toString());
            return;
SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdInit.java
@@ -49,19 +49,17 @@
        }
        //发送设备信息
        Map<String, Object> _msgStruct = new HashMap<>();
        _msgStruct.put("code", CodeA2U.DeviceInfo);
        _msgStruct.put("userAgent", System.getProperty("http.agent"));
        _msgStruct.put("mac", DeviceUtil.getLocalMac());
        _msgStruct.put("imei", "");
        _msgStruct.put("android_id", DeviceUtil.getAndroidId());
        _msgStruct.put("unique_id", DeviceUtil.getUniqueID());
        _msgStruct.put("memoryTotal", size);
        UnityMsgHandler.sendMessageToUnity(_msgStruct);
        UnityMsgHandler.sendMessageToUnity(CodeA2U.DeviceInfo,_msgStruct);
        //通知sdk初始化完成
        _msgStruct.clear();
        _msgStruct.put("code", CodeA2U.SdkInitComplete);
        _msgStruct.put("channelPlatform", PlatformDiff.I.platformName());
        UnityMsgHandler.sendMessageToUnity(_msgStruct);
        UnityMsgHandler.sendMessageToUnity(CodeA2U.SdkInitComplete,_msgStruct);
        LogUtil.debug("CmdInit", "Sdk初始化完成");
    }
}
SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestPermission.java
@@ -1,10 +1,12 @@
package com.secondworld.sdk.command;
import com.secondworld.sdk.PermissionManager;
import com.secondworld.sdk.utils.CodeU2A;
import org.json.JSONException;
import org.json.JSONObject;
public class CmdRequestPermission implements  ICommand {
public class CmdRequestPermission implements ICommand {
    @Override
    public int getCode() {
@@ -12,7 +14,8 @@
    }
    @Override
    public void process(JSONObject json) {
    public void process(JSONObject json) throws JSONException {
        String permission = json.getString("permission");
        PermissionManager.I.requestPermissions(permission);
    }
}
SdkProject/library/src/main/java/com/secondworld/sdk/utils/BatteryUtil.java
@@ -68,10 +68,9 @@
                if (_batteryLevel != m_BatteryLevel) {
                    try {
                        _msg.put("code", CodeA2U.BatteryLevel);
                        _msg.put("level", _batteryLevel);
                        UnityMsgHandler.sendMessageToUnity(_msg);
                        UnityMsgHandler.sendMessageToUnity(CodeA2U.BatteryLevel,_msg);
                        m_BatteryLevel = _batteryLevel;
@@ -95,10 +94,9 @@
                        _transCode = 3;
                    }
                    _msg.put("code", CodeA2U.BatteryCharging);
                    _msg.put("status", _transCode);
                    UnityMsgHandler.sendMessageToUnity(_msg);
                    UnityMsgHandler.sendMessageToUnity(CodeA2U.BatteryCharging,_msg);
                    m_Status = _status;
                }
SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeA2U.java
@@ -19,15 +19,15 @@
    int BatteryCharging = 2;
    /**
     * 回调sdk逻辑完毕
     * */
     */
    int SdkInitComplete = 3;
    /**
     * 回调android设备信息
     * */
     */
    int DeviceInfo = 4;
    /**
     * 回调推送的独立id
     * */
     */
    int PushClientID = 5;
    /**
     * 回调外部存储根目录地址
@@ -37,6 +37,10 @@
     * 触发了退出游戏逻辑, 打开二次确认界面
     */
    int ExitGame = 7;
    /**
     * 权限申请结果
     */
    int PermissionCallBack = 8;
    // 自由sdk_code
    int PlatformInitOk = 100;
SdkProject/library/src/main/java/com/secondworld/sdk/utils/FileUtil.java
@@ -33,9 +33,7 @@
        if (installVer == currentVer) {
            LogUtil.i("copyAssets", "已拷贝过,installVer:" + installVer + ";" + "currentVer:" + currentVer);
            Map<String, Object> _msg = new HashMap<>();
            _msg.put("code", CodeA2U.AssetCopyFinished);
            UnityMsgHandler.sendMessageToUnity(_msg);
            UnityMsgHandler.sendMessageToUnity(CodeA2U.AssetCopyFinished);
            return;
        }
@@ -53,8 +51,7 @@
            // 存储此次的拷贝版本
            SPUtils.get().edit().putLong(SPUtils.LAST_COPY_VERSION, currentVer).apply();
            Map<String, Object> _msg = new HashMap<>();
            _msg.put("code", CodeA2U.AssetCopyFinished);
            UnityMsgHandler.sendMessageToUnity(_msg);
            UnityMsgHandler.sendMessageToUnity(CodeA2U.AssetCopyFinished);
        } catch (Exception e) {
            e.printStackTrace();
        }