From d96addbbe88584db54bd83d590eb019877908f16 Mon Sep 17 00:00:00 2001
From: lwb <q3213421wrwqr>
Date: 星期四, 21 一月 2021 15:14:05 +0800
Subject: [PATCH] 9527 增加权限请求
---
Channel/Android/gtgame/release/libs/library-release-gtgame.aar | 0
SdkProject/library/src/main/java/com/secondworld/sdk/PermissionManager.java | 60 ++++++++++++++++++++
SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeA2U.java | 10 ++-
Channel/Android/test/release/libs/library-release-test.aar | 0
Channel/Android/test/debug/libs/library-debug-test.aar | 0
SdkProject/channel/GTGame/java/com/secondworld/sdk/MySdkMgr.java | 45 ++++----------
SdkProject/library/src/main/java/com/secondworld/sdk/UnityMsgHandler.java | 16 ++---
SdkProject/app/src/main/java/com/secondworld/demo/MainActivity.java | 9 ++
SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdInit.java | 6 -
Channel/Android/gtgame/debug/libs/library-debug-gtgame.aar | 0
SdkProject/library/src/main/AndroidManifest.xml | 2
SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestPermission.java | 9 ++-
SdkProject/library/src/main/java/com/secondworld/sdk/utils/BatteryUtil.java | 6 -
SdkProject/library/src/main/java/com/secondworld/sdk/GameActivityProxy.java | 4
SdkProject/library/src/main/java/com/secondworld/sdk/utils/FileUtil.java | 7 -
15 files changed, 111 insertions(+), 63 deletions(-)
diff --git a/Channel/Android/gtgame/debug/libs/library-debug-gtgame.aar b/Channel/Android/gtgame/debug/libs/library-debug-gtgame.aar
index 3d69ac6..2834ed1 100644
--- a/Channel/Android/gtgame/debug/libs/library-debug-gtgame.aar
+++ b/Channel/Android/gtgame/debug/libs/library-debug-gtgame.aar
Binary files differ
diff --git a/Channel/Android/gtgame/release/libs/library-release-gtgame.aar b/Channel/Android/gtgame/release/libs/library-release-gtgame.aar
index 0673439..48e943f 100644
--- a/Channel/Android/gtgame/release/libs/library-release-gtgame.aar
+++ b/Channel/Android/gtgame/release/libs/library-release-gtgame.aar
Binary files differ
diff --git a/Channel/Android/test/debug/libs/library-debug-test.aar b/Channel/Android/test/debug/libs/library-debug-test.aar
index 24b5581..7472515 100644
--- a/Channel/Android/test/debug/libs/library-debug-test.aar
+++ b/Channel/Android/test/debug/libs/library-debug-test.aar
Binary files differ
diff --git a/Channel/Android/test/release/libs/library-release-test.aar b/Channel/Android/test/release/libs/library-release-test.aar
index 5d65c67..bab69a5 100644
--- a/Channel/Android/test/release/libs/library-release-test.aar
+++ b/Channel/Android/test/release/libs/library-release-test.aar
Binary files differ
diff --git a/SdkProject/app/src/main/java/com/secondworld/demo/MainActivity.java b/SdkProject/app/src/main/java/com/secondworld/demo/MainActivity.java
index c5b668c..c0fc998 100644
--- a/SdkProject/app/src/main/java/com/secondworld/demo/MainActivity.java
+++ b/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 -> {
diff --git a/SdkProject/channel/GTGame/java/com/secondworld/sdk/MySdkMgr.java b/SdkProject/channel/GTGame/java/com/secondworld/sdk/MySdkMgr.java
index 9612ed8..991d060 100644
--- a/SdkProject/channel/GTGame/java/com/secondworld/sdk/MySdkMgr.java
+++ b/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 + "锛歰nCancel");
}
});
@@ -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("璇勫垎鍥炶皟", "鍙栨秷");
}
});
diff --git a/SdkProject/library/src/main/AndroidManifest.xml b/SdkProject/library/src/main/AndroidManifest.xml
index a73b212..2db666b 100644
--- a/SdkProject/library/src/main/AndroidManifest.xml
+++ b/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"
diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/GameActivityProxy.java b/SdkProject/library/src/main/java/com/secondworld/sdk/GameActivityProxy.java
index e146f63..00de247 100644
--- a/SdkProject/library/src/main/java/com/secondworld/sdk/GameActivityProxy.java
+++ b/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);
}
}
diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/PermissionManager.java b/SdkProject/library/src/main/java/com/secondworld/sdk/PermissionManager.java
new file mode 100644
index 0000000..7163eac
--- /dev/null
+++ b/SdkProject/library/src/main/java/com/secondworld/sdk/PermissionManager.java
@@ -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);
+ }
+
+}
diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/UnityMsgHandler.java b/SdkProject/library/src/main/java/com/secondworld/sdk/UnityMsgHandler.java
index 6397444..9077d87 100644
--- a/SdkProject/library/src/main/java/com/secondworld/sdk/UnityMsgHandler.java
+++ b/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;
diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdInit.java b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdInit.java
index be1dc88..1e54fda 100644
--- a/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdInit.java
+++ b/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鍒濆鍖栧畬鎴�");
}
}
diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestPermission.java b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestPermission.java
index 97cc5a8..87611bf 100644
--- a/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestPermission.java
+++ b/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);
}
}
diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/utils/BatteryUtil.java b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/BatteryUtil.java
index fb23cc1..b72978e 100644
--- a/SdkProject/library/src/main/java/com/secondworld/sdk/utils/BatteryUtil.java
+++ b/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;
}
diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeA2U.java b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeA2U.java
index 60c29f1..bebb6ab 100644
--- a/SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeA2U.java
+++ b/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;
diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/utils/FileUtil.java b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/FileUtil.java
index 173dbf4..8cefb12 100644
--- a/SdkProject/library/src/main/java/com/secondworld/sdk/utils/FileUtil.java
+++ b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/FileUtil.java
@@ -33,9 +33,7 @@
if (installVer == currentVer) {
LogUtil.i("copyAssets", "宸叉嫹璐濊繃锛宨nstallVer:" + 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();
}
--
Gitblit v1.8.0