怎样判断当前设备是否连接了VPN?

当前尝试通过以下方式获取设备是否连接VPN:

public static async isVPN(): Promise<boolean> { 
  try { 
  const defaultNetHandle = await netConnection.getDefaultNet() 
  const capabilities = await netConnection.getNetCapabilities(defaultNetHandle) 
  const noVpnCap: netConnection.NetCap | undefined = capabilities.networkCap?.find((elem: netConnection.NetCap) => { 
    return elem == netConnection.NetCap.NET_CAPABILITY_NOT_VPN 
  }) 
 
  return !noVpnCap 
} catch(error) { 
  logger.e("invoke isVPN failed.", error) 
  return false 
} 
}

但是结果并不符合预期,该方法始终返回true。请问该种用法是否存在错误,以及是否有更好的办法判断设备是否连接了VPN?

HarmonyOS
2024-09-10 12:18:35
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

如需要判断获取VPN,当前可使用getNetCapabilities方法获取的bearerTypes参数,当bearerTypes的值是4时表示使用了VPN;

connection.getDefaultNet().then((netHandle: connection.NetHandle) => { 
  connection.getNetCapabilities(netHandle).then((data: connection.NetCapabilities) => { 
    const type: Number = data.bearerTypes[0]; 
    if (type === 4) { 
      console.log('is VPN'); 
    } 
  }) 
});
分享
微博
QQ
微信
回复
2024-09-10 17:29:05
相关问题
怎样判断当前线程是否是主线程?
345浏览 • 1回复 待解决
判断当前设备是手机还是平板
6131浏览 • 1回复 待解决
如何判断当前设备是不是折叠屏?
396浏览 • 1回复 待解决
如何判断当前线程是否是主线程
2242浏览 • 1回复 待解决
如何判断当前网络是否是Wi-Fi环境?
266浏览 • 1回复 待解决
判断当前app的运行环境是否是64位
308浏览 • 1回复 待解决
怎样判断应用可以被卸载
395浏览 • 1回复 待解决
获取当前WLAN连接信息
576浏览 • 1回复 待解决
如何获取当前设备设备名称
2271浏览 • 1回复 待解决
HarmonyOS 如何判断设备类型
264浏览 • 1回复 待解决
HarmonyOS如何判断设备类型?
284浏览 • 1回复 待解决
获取当前网络连接能力
648浏览 • 1回复 待解决
获取当前设备屏幕密度。
269浏览 • 1回复 待解决
判断当前网络环境是否支持IPV4或PV6
620浏览 • 1回复 待解决