工具模块提供了一些辅助功能。
注意:部分接口需要添加权限,如下所示:
<!-- 调节屏幕亮度功能需添加此权限 -->
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<!-- 保存 key-value 数据及获取 key-value 数据功能需添加此权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
接口描述:获取设备相关信息。
接口调用:
String deviceInfo = SuperSDK.invokeString(BCoreConst.tools.MODULE_NAME, "getDeviceInfo", null);
Log.d(TAG, "deviceInfo="+deviceInfo);
日志打印:
{
"fingerprint_id":"202308080201670100293fc80a8cad69d4a640cdacc59a6bdde",
"client_id":"d8962b73cbf1b2c0fd8841a8886a7dad",
"trace_id":"4e11c764c820258ce778020b17a4e8f3",
"youzu_id":"d8962b73cbf1b2c0fd8841a8886a7dad",
"android_device_id":"f0459465a15088ce",
"google_id":"8d4d7200-bd1c-45be-8508-3e5a29d47081",
"android_imei":"ffffffff-f47f-2351-ffff-ffffef05ac4a",
"shumei_id":"20231023180912695c7af3c0f40c68b7a27d18a23cb77c018d887d05f29d30",
"device_name":"Xiaomi",
"package_name":"com.syj.hgame",
"idfa":"",
"idfv":"",
}
KEY | KEY含义 | 备注 |
---|---|---|
fingerprint_id | 设备指纹 ID | 正常 51 个字符,其它值为异常情况 |
shumei_id | 数美 ID | 正常 62 个字符,其它值为异常情况 |
android_device_id | 安卓 ID | 正常 16 个字符,其它值为异常情况 |
google_id | 谷歌 ID | 仅支持 Android |
package_name | 包名 | 应用 bundle id |
android_imei | IMEI | 仅支持海外,国内默认 0 |
device_name | 设备名称 | 设备自定义名称 |
youzu_id | 游族 ID | 正常 32 个字符,其它值为异常情况 |
client_id | 设备指纹 ID 映射 | 正常 32 个字符,其它值为异常情况 |
trace_id | 当前启动标识 ID | 正常 32 个字符,其它值为异常情况 |
idfv | iOS - 供应商标识符 | 仅支持 iOS, Android 空字符串 |
idfa | iOS - 广告标识符 | 仅支持 iOS, Android 空字符串 |
接口描述:采集手机设备信息。
接口调用:
String collectionData = SuperSDK.invokeString(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_GET_COLLECTION_DATA, null);
Log.d(TAG, "collectionData="+collectionData);
日志打印:
{
"bundle_id": "com.youzu.supersdk.demo",
"device_name": "Xiaomi",
"device_type": "Redmi Note 3",
"idfa": "",
"idfv": "",
"language": "zh",
"network": "WIFI",
"operator": "other",
"os_version": "5.0.2"
}
接口描述:调用该接口,获取客户端 ip 地址的真正信息,如地域等。
注意:只支持海外网游渠道。
接口调用:
SuperSDK.invoke(BCoreConst.tools.MODULE_NAME, "getClientIP", null);
接口回调:
private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
@Override
public void onSuperSDK(String moduleName, String funcName, String result) {
// 调用接口异步监听结果。
Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result);
if (BCoreConst.tools.MODULE_NAME.equals(moduleName) && "getClientIP".equals(funcName)) {
// 获取客户端 IP 信息的回调
getClientIPInfo(result);
} else {
Log.d("supersdk", "其他模块方法的监听结果");
}
}
};
private void getClientIPInfo(String result) {
JSONObject json = JsonUtils.parseObject(result);
int code = json.getIntValue("code");
String msg = json.getString("msg");
String data= json.getString("data");
if(BCoreCode.SUCCESS == code) {
// 访问服务器成功,data 为服务器返回的完整数据
Log.d("result", "访问成功,data="+data);
} else {
// 访问服务器失败,msg 为失败原因
Log.d("result", "访问失败,msg="+msg);
}
}
日志打印:
moduleName : tools,
funcName : getClientIP,
result : {
"msg":"成功",
"data":{
"ip":"45.40.60.217",
"country":"JP", // 地区或国家
"continent":"AS" // 大洲
},
"code":1
}
参考文档: 第一列国家码,最后一列大洲码 https://www.geonames.org/countries/
接口描述:获取系统使用的语言。
接口调用:
String language = SuperSDK.invokeString(BCoreConst.tools.MODULE_NAME, "getLanguage", null);
Log.d(TAG, "language="+language);
日志打印:
language=zh-Hans-CN
接口描述:获取当前设备设置的国家地区。
接口调用:
String country = SuperSDK.invokeString(BCoreConst.tools.MODULE_NAME, "getCountry", null);
Log.d(TAG, "country="+country);
日志打印:
country=CN
接口描述:复制文字到剪切板。
接口调用:
Map<String, String> map = new HashMap<String, String>();
map.put(BCoreConst.tools.KEY_VALUE, "测试复制文字");
SuperSDK.invoke(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_COPY_TOCLIPBOARD, map);
接口描述:弹窗提示,分为 toast 框(弹出后马上消失的框),和 dialog 框(有按钮,需点击才能消失的框)。
接口调用:
// 不传入按钮,判断为 toast 框
Map<String, String> map = new HashMap<String, String>();
map.put(BCoreConst.tools.KEY_TOOLS_CONTENT, "弹出 toast 框");// 提示用,过一秒钟即会消失
SuperSDK.invoke(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_ALERT, map);
接口描述:可以显示若干按钮,按钮个数可变,按钮文字使用”|“分割。如需要两个按钮:确认、取消,则写成”确认|取消”。三个按钮:”确认|中立|取消”
接口调用:
// 传入按钮,判断为 dialog
Map<String, String> map = new HashMap<String, String>();
map.put(BCoreConst.tools.KEY_TOOLS_TITLE, "标题");
map.put(BCoreConst.tools.KEY_TOOLS_CONTENT, "弹窗内容: 这是测试内容");
map.put(BCoreConst.tools.KEY_TOOLS_BUTTON, "确认|取消");// 两个按钮
SuperSDK.invoke(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_ALERT, map);
接口回调:
private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
@Override
public void onSuperSDK(String moduleName, String funcName, String result) {
// 调用接口异步监听结果。
Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result);
if (BCoreConst.tools.MODULE_NAME.equals(moduleName) && BCoreConst.tools.FUNC_ALERT.equals(funcName)) {
// 弹窗回调
JSONObject json = JsonUtils.parseObject(result);
int code = json.getIntValue("code");
if(BCoreCode.SUCCESS != code) {
String msg = json.getString("msg");
Log.d(TAG, "alert failed: "+code+", "+msg);
return;
}
String data = json.getString("data");
if ("确认".equals(data)) {
// 用户点击了确认按钮
} else if ("取消".equals(data)) {
// 用回点击了取消按钮
} else {
Log.d(TAG, "result: " + data);
}
} else {
Log.d("supersdk", "其他模块方法的监听结果");
}
}
};
日志打印:
moduleName:tools
funcName:alert
result:{"code":1,"data":"确认","msg":"success"}
接口描述:调节屏幕的亮度,只能传 0.0-1.0 之间的数字。需要添加权限,请看最上面权限添加。
接口调用:
// 调节屏幕亮度
Map<String, String> map = new HashMap<String, String>();
map.put(BCoreConst.tools.KEY_VALUE, (light+=0.1)+""); // 传值范围:0.0-1.0
SuperSDK.invoke(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_SET_SCREEN_LIGHT, map);
接口描述:保存数据到 SD 卡。需要添加权限,请查看最上面权限添加。
接口调用:
// 保存的数据为 key="data",value=" 测试保存数据 "
Map<String, String> map = new HashMap<String, String>();
map.put(BCoreConst.tools.KEY, "data");
map.put(BCoreConst.tools.KEY_VALUE, "测试保存数据");
SuperSDK.invoke(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_SAVE_DATA, map);
接口描述:获取上一条保存下来的数据。
接口调用:
// 获取 key="data" 的 value 值
Map<String, String> map = new HashMap<String, String>();
map.put(BCoreConst.tools.KEY, "data");
String data = SuperSDK.invokeString(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_GET_DATA, map);
Log.d(TAG, "data="+data);
日志打印:
data = 测试保存数据
接口调用:
SuperSDK.invoke(BCoreConst.tools.MODULE_NAME,"getAPPStoreReview", null);
接口调用:
SuperSDK.invoke(BCoreConst.tools.MODULE_NAME, "getStoreReview", null);
注意事项:
// OnSuperSDKListener 的 onSuperSDK 方法回调结果,解析后判断
if(BCoreConst.tools.MODULE_NAME.equals(moduleName)
&& "getStoreReview".equals(funcName)) {
// TODO 处理回调 json 信息
}
日志打印:
moduleName:tools
funcName:getStoreReview
result:{"code":1,"msg":"app内应用谷歌评价弹窗关闭"}
接口调用:
SuperSDK.invoke(BCoreConst.tools.MODULE_NAME,"openSystemSetting", null);
接口描述:用于广告溯源,根据设备查询引流该玩家的广告。
接口调用:
SuperSDK.invoke(BCoreConst.tools.MODULE_NAME, "getDeviceCheckInfo", null);
接口回调:
private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
@Override
public void onSuperSDK(String moduleName, String funcName, String result) {
// 调用接口异步监听结果。
Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result);
if (BCoreConst.tools.MODULE_NAME.equals(moduleName) && "getDeviceCheckInfo".equals(funcName)) {
// 海外设备广告信息查询
getDeviceCheckInfo(result);
} else {
Log.d("supersdk", "其他模块方法的监听结果");
}
}
};
private void getDeviceCheckInfo(String result) {
JSONObject json = JsonUtils.parseObject(result);
int code = json.getIntValue("code");
String msg = json.getString("msg");
String data= json.getString("data");
if(BCoreCode.SUCCESS == code) {
// 海外设备广告信息查询成功,data 为服务器返回的完整数据
Log.d("result", "海外设备广告信息查询成功,data="+data);
} else {
// 海外设备广告信息查询失败,msg 为失败原因
Log.d("result", "海外设备广告信息查询失败,msg="+msg);
}
}
日志打印:
moduleName:tools
funcName:getDeviceCheckInfo
result:{
"code":1,
"data":"{
"ad_game_type":"",
"ad_name":"",
"is_ad_device":false
}",
"msg":"success"
}
接口描述:获取 CpsId 信息。
接口调用:
// 获取 CpsId
String cpsId =SuperSDK.invokeString(BCoreConst.tools.MODULE_NAME, "getCpsId", null);
Log.d(TAG, "cpsId="+cpsId);
日志打印:
cpsId=1_9_1662101236_394306
接口描述:获取 AndroidManifest 下游戏包名。
接口调用:
// 获取应用包名
String packageName = SuperSDK.invokeString(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_GET_PACKAGE_NAME, null);
Log.d(TAG, "packageName="+packageName);
日志打印:
packageName=com.youzu.supersdk.demo
接口描述:获取 AndroidManifest 下的应用名称。
接口调用:
// 获取应用名称
String appName = SuperSDK.invokeString(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_GET_APP_NAME, null);
Log.d(TAG, "appName="+appName);
日志打印:
appName=SuperSDKDemo
接口描述:获取 AndroidManifest 下 versionCode。
接口调用:
// 获取 AndroidManifest 下 versionCode
int versionCode = SuperSDK.invokeInt(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_GET_VERSION_CODE, null);
Log.d(TAG, "versionCode="+versionCode);
日志打印:
versionCode=40
接口描述:获取 AndroidManifest 下 versionName。
接口调用:
// 获取 AndroidManifest 下 versionName
String versionName = SuperSDK.invokeString(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_GET_VERSION_NAME, null);
Log.d(TAG, "versionName="+versionName);
日志打印:
versionName=378
接口描述:获取 AndroidManifest 下 meta-data 的 value 值。
接口调用:
// 获取 key = sp_version 的值
Map<String, String> params= new HashMap<String, String>();
params.put(BCoreConst.tools.KEY, "sp_version");// 获取 key="sp_version" 的 value 值
String spVersion = SuperSDK.invokeString(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_GET_META_DATA, params);
Log.d(TAG, "spVersion="+spVersion);
日志打印:
spVersion=3.1.1
常量字符串 | 实际字符串 | 描述 |
---|---|---|
BCoreConst.tools.MODULE_NAME | tools | 模块名称 |
BCoreConst.tools.FUNC_GET_COLLECTION_DATA | getCollectionData | 获取设备信息,json |
BCoreConst.tools.FUNC_GET_PACKAGE_NAME | getPackageName | 获取应用包名 |
BCoreConst.tools.FUNC_GET_APP_NAME | getAppName | 获取应用名称 |
BCoreConst.tools.FUNC_GET_LANGUAGE | getLanguage | 获取客户端系统语言 |
BCoreConst.tools.FUNC_GET_VERSION_CODE | getVersionCode | 获取 AndroidManifest 下 versionCode |
BCoreConst.tools.FUNC_GET_VERSION_NAME | getVersionName | 获取 AndroidManifest 下 versionName |
BCoreConst.tools.FUNC_GET_META_DATA | getMetaData | 获取 AndroidManifest 下 meta-data 的 value 值 |
BCoreConst.tools.FUNC_COPY_TOCLIPBOARD | copyToClipboard | 拷贝字符串到剪切板 |
BCoreConst.tools.FUNC_ALERT | alert | 弹窗:toast、dialog |
BCoreConst.tools.FUNC_SET_SCREEN_LIGHT | setScreenLight | 调节屏幕亮度 |
BCoreConst.tools.FUNC_SAVE_DATA | saveData | 保存 key-value 数据 |
BCoreConst.tools.FUNC_GET_DATA | getData | 获取 key-value 数据 |