diff --git a/src/android/PermissionsPlugin.java b/src/android/PermissionsPlugin.java index 2b02fb9..8ffbfc1 100644 --- a/src/android/PermissionsPlugin.java +++ b/src/android/PermissionsPlugin.java @@ -1,7 +1,10 @@ package custom.cordova.permissions; import android.Manifest; +import android.content.Context; import android.content.pm.PackageManager; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; import android.os.Build; import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; @@ -14,6 +17,11 @@ import org.apache.cordova.CordovaPlugin; import org.json.JSONArray; import org.json.JSONException; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.util.Collections; +import java.util.Enumeration; + /** * Created by CrazyDong on 2017/11/2. *android6.0以上添加权限插件 @@ -34,10 +42,50 @@ public class PermissionsPlugin extends CordovaPlugin implements ActivityCompat.O checkPermission(preArr); return true; + }else if(action.equals("VPN")){ + isVpnUsed(); } return false; } + /*判断VPN方法*/ + public void isVpnUsed() { + boolean isVpn = false; + //检查网络是否链接 + ConnectivityManager connectivityManager = (ConnectivityManager) cordova.getActivity() + .getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); + //判断时候有网络 + if(networkInfo != null){ + try { + Enumeration niList = NetworkInterface.getNetworkInterfaces(); + if(niList != null) { + for (NetworkInterface intf : Collections.list(niList)) { + if(!intf.isUp() || intf.getInterfaceAddresses().size() == 0) { + continue; + } + if ("tun0".equals(intf.getName()) || "ppp0".equals(intf.getName())){ + isVpn = true; + mCallbackContext.success("VPN_OK"); + } + } + + if(!isVpn){ + mCallbackContext.success(networkInfo.getTypeName());//返回网络类型 + } + + } + } catch (Throwable e) { + mCallbackContext.error("err"); + } + + }else{ + mCallbackContext.error("null_network"); + } + + } + + /** * 检测权限 */