LoginSignup
2
1

More than 3 years have passed since last update.

KotlinでVPNを判定する方法

Last updated at Posted at 2018-11-27

AndroidStudio3.2.1 Kotlinでの挙動です。

VPN接続の場合は、 Log.i("VPN", "VPN" )の分岐に入ります。

参考ソース

https://developer.android.com/reference/android/net/NetworkCapabilities
https://stackoverflow.com/questions/29419175/networkinfo-for-vpn-on-android-api-21

import android.util.Log
import android.os.Bundle
import android.content.Context
import android.annotation.SuppressLint
import android.net.ConnectivityManager
import android.net.NetworkCapabilities
import android.support.v7.app.AppCompatActivity


class MainActivity : AppCompatActivity() {

    @SuppressLint("MissingPermission")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var cm = this.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        val networks = cm.allNetworks

        for (i in networks.indices) {
            val caps = cm.getNetworkCapabilities(networks[i])
            if (caps.hasTransport(NetworkCapabilities.TRANSPORT_VPN)) {
                Log.i("VPN", "VPN" )
            } else {
                Log.i("NOTVPN", "NOTVPN" )
            }
        }
    }
}
2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1