gpt4 book ai didi

Android VpnService - 如何检查 VpnService 是否已启动?

转载 作者:太空宇宙 更新时间:2023-11-03 13:24:50 33 4
gpt4 key购买 nike

我有两个使用 VpnService 类的应用程序。但同一时间只能运行一个 VPN 连接。创建新接口(interface)时,现有接口(interface)将被停用,我希望新应用程序不要启动 vpnservice 以避免旧接口(interface)被停用及其 VPN 连接。所以我想在调用 startService() 之前检查是否启动了另一个 vpnservice。

是否有任何 api 可以执行此操作?

最佳答案

据我所知,您无法直接检查。以下是我在应用程序中用于检查 VPN 连接的方法。

1) 为 http://jsonip.com 调用 HTTPGet

                    public static String GetDeviceIp(){

HttpGet req = new HttpGet("http://jsonip.com");

DefaultHttpClient httpClient = new DefaultHttpClient();

HttpResponse response = httpClient.execute(req);


if (response.getStatusLine().getStatusCode() == 200){
ipaddress=parseJson(response.getEntity().getContent());

}else
{ ipaddress ="EMPTY" }

return ipaddress
}

2)解析json响应并从响应中提取IP地址

      public static String parseJson(InputStream in)
{
String iP;
try{

String result;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();

String line = null;
while ((line = bufferedReader.readLine()) != null)
{
sb.append(line + "\n");
}
result = sb.toString();

JSONObject jsonObject = new JSONObject(result);
iP=jsonObject.getString("ip");
}catch (Exception e){
iP="EMPTY";
}

return iP;
}

3)比较VPN服务器Ip和提取的Ip是否相等,如果相等则VPN开启,否则VPN关闭

public static boolean IsVPNON(){
return GetDeviceIp().equals("VPN-IP address");}

关于Android VpnService - 如何检查 VpnService 是否已启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22057502/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com