Определить, включен ли сервис vpn - PullRequest
0 голосов
/ 26 марта 2019

У меня проблема с некоторыми устройствами, такими как Android Box или телефоны Huawei. Мне нужно защитить свое приложение, если пользователь использует приложение для мониторинга пакетов, что я сделал, если у пользователя есть активная vpn на своем устройстве, не запрашивая jsonparse но некоторые устройства, даже если vpn не активен, jsonparse не запускается.

Вот мой код

public static boolean isVpnConnectionActive() {
        List<String> networks = new ArrayList<>();

        try {
            for (NetworkInterface networkInterface : Collections.list(NetworkInterface.getNetworkInterfaces())) {
                if (networkInterface.isUp()) {
                    networks.add(networkInterface.getName());
                }if (networkInterface.getName().contains("tun0")||  networkInterface.getName().contains("ppp0")) {
                    System.exit(1);
                }

            }
        } catch (Exception ignored) {

        }
        return networks.contains("tun0");


    }

Я запрашиваю jsonParse при запуске и создании, чтобы пользователь не активировал VPN после запуска моего приложения

 @Override
    protected void onStart() {
        super.onStart();
        if (isVpnConnectionActive()) {



        }else { jsonParse();}}

Я запрашиваю анализ json таким образом

    private void jsonParse() {

        final String url = "http://example.dns.net/json.php";

        JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            JSONArray jsonArray = response.getJSONArray("employees");

                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject employee = jsonArray.getJSONObject(i);

                                String Urlx = employee.getString("urlx");
                                String Urlc = employee.getString("urlc");
                                String Urlb = employee.getString("urlb");
                                String TextBar = employee.getString("TextBar");


    DFG_1 = Urlx;
    DFG_2 = Urlc;
    DFG_3 = Urlb;
    Text_Bar = TextBar;
    text2.setText(TextBar);


}


                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
            }


        });
        mQueue.add(request);

    }

почему Android пирог и некоторые устройства не работают таким образом?

1 Ответ

0 голосов
/ 27 июня 2019

Есть ли причина, по которой вы просто не используете NetworkCapabilities#hasTransport, см. https://developer.android.com/reference/android/net/NetworkCapabilities#hasTransport(int)?

Используя это, вы можете проверить, "использует ли сеть VPN-транспорт", используя TRANSPORT_VPN.

...