AOne Android SDK接入文档 8、在需要启动Vpn的界面增加Vpn启动的方法,并监听Vpn启动的状态 在合适的时机(建议在调用启动Vpn的方法之前),调用RegistGlobalNotification的方法,监听Vpn的一些状态,根据这些状态来同步界面的样式 VPN状态说明: UNINITED : VPN 未初始化 INITED : VPN 已初始化 READY : VPN 配置完成 CONNECTED : VPN 已上线 DISCONNECTED : VPN 已下线 / 方法名: RegistGlobalNotification 描述:这个方法用于Sdk VPN状态的回调,用于同步改变VPN界面的一些上下线的状态 VPN状态说明: UNINITED : VPN 未初始化 INITED : VPN 已初始化 READY : VPN 配置完成 CONNECTED : VPN 已上线 DISCONNECTED : VPN 已下线 使用前置条件:无 使用线程: 主线程 回调线程: 主线程 使用方法: AOneSdkClient.Companion.RegistGlobalNotification(new AOneSdkClient.Companion.SdkCallBack() { @Override public void onResponse(@NonNull Map map) { } }); 参数说明: 接口回调数据: 回调后的数据类型是map类型, 成功回调示例: {code"0x00000", data{"tunnelState":"INITED"}, message成功} 失败回调示例:{code"0x00999", data{}, message未知错误} 接口回调数据字段说明: code: 状态码, data: vpn状态,里面包含有tunnelState状态的字段,value的含义见上面的VPN状态说明, message: 消息 / private void sdkCallBack() { AOneSdkClient.Companion.RegistGlobalNotification(new AOneSdkClient.Companion.SdkCallBack() { @Override public void onResponse(@NonNull Map map) { Log.i(TAG, "[sdkCallBack] response: " + map); Log.i(TAG, "threadid:" + Thread.currentThread().getName()); String code map.get(Const.RESPONSE.CODE); String message map.get(Const.RESPONSE.MESSAGE); if (ResultCode.SUCCESS.getValue().equals(code)) { String data map.get(Const.RESPONSE.DATA); if (!TextUtils.isEmpty(data)) { Map dataMaps GsonUtils.Companion.GsonToMaps(data); if (dataMaps ! null) { ((TextView) findViewById(R.id.status)).setText(dataMaps.get(Const.DATA.TUNNELSTATE)); } } } else { Toast.makeText(MainActivity.this, message, Toast.LENGTHSHORT).show(); } } }); }