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

我有两个使用VpnService类的应用程序.但是一次只能运行一个VPN连接.创建新接口时,现有接口将被停用,我希望新应用程序不要启动vpnservice以避免旧接口被停用及其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上以编程方式配置VPN?