【问题标题】:Method to pass username and password in VpnService.Builder在 VpnService.Builder 中传递用户名和密码的方法
【发布时间】:2012-07-13 08:41:19
【问题描述】:

我正在开发我想在其中使用 VPN 网络的应用程序。要在设备中创建 VPN 网络,我们需要从设备的(设置-无线和网络-VPN 设置)菜单中进行配置。

我想通过带有硬编码信息的代码进行这么多设置。

从 API 级别 4.0 开始,android 提供 API 来处理 VPN services

为了了解这些方法的实现,我使用了 Android ToyVPN 的示例项目。但是在这么多方法中,我没有找到任何传递用户名和密码的方法。我必须连接 VPN 网络的信息是。

  1. VPN 服务器名称
  2. 用户名
  3. 密码

如果我从设备手动配置,则使用这三个信息可以成功连接到 VPN 网络。但我想以编程方式执行此操作。这是用于连接到 VPN 网络的类文件。 ToyVpnClient.javaToyVpnService.java。除了这个示例应用程序之外,设备中的崩溃。

任何帮助将不胜感激。

【问题讨论】:

  • 设置通常不能通过程序更改。您通常可以做的最好的事情就是弹出设置供用户填写。
  • 感谢您的建议,但是如果我想在没有用户交互的情况下在后台建立 VPN 连接怎么办。
  • @juned 你有什么解决方案来配置 L2TP 和 PPTP 连接吗?如果你找到了,请分享。
  • 不,@AndroidLearner 我还在寻找那个,你检查过 openvpn 项目吗?也见this
  • 到目前为止,这只能在 2.2 和 2.3 中实现——我自己也在寻找一种在 3.x 和 4.x 中执行此操作的方法...

标签: android vpn


【解决方案1】:

你说的VpnService不是你想的那样。它只是您创建自己的 VPN 解决方案的框架。一旦建立,您将在网络 (IP) 层获得所有通信,您可以使用它做任何您想做的事情,例如,将其加密并将其发送到您的服务器 - 例如 /samples/ 中的 ToyVpn 项目android-14/ 目录。您还需要自己的服务器端代码来进行解密和必要的流量路由。

很遗憾,您无法以编程方式设置内置的 android VPN。您可以做的最好的事情是向用户显示一个对话框,解释如何设置它,然后弹出系统设置并显示正确的屏幕。

【讨论】:

  • 我也在尝试这样做。我能够在 API 10 中修改 sdk 中的 android.jar(将该文件设置为与使用 adb pull 从设备获得的文件完全相同),但现在我不能这样做,因为新设备不包含文件 VpnManager.java、PptpProfile.java 等(您可以在 android.net.vpn 中找到的文件),所以我在 android 项目中创建了这些类(通过复制它们),但尽管它加载到设备,它不绑定。根据您所说,如果我保存用户名...(将继续)
  • (继续)和 VPN 应用程序中的密码(设备的默认设置),您知道以编程方式调用该应用程序以使其运行并连接到所需网络的方法吗?,没有甚至显示默认应用程序。我正在尝试在 android 4.2.2,API 17 中执行此操作。
【解决方案2】:

可以使用内部 android.jar(com.android.internal) 和 hidden(@hide) API。参考以下链接:

How to programmatically create a new VPN interface with Android 4.0?

【讨论】:

    猜你喜欢
    • 2014-05-03
    • 2017-03-10
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 2023-03-24
    • 2022-01-24
    相关资源
    最近更新 更多