微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

始终在线的 VPN 以编程方式打开 android

如何解决始终在线的 VPN 以编程方式打开 android

永远在线的 VPN 开关能否以编程方式打开?

我已经添加了设备管理员权限。之后,我设置了始终与设备管理员一起使用

mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
    mDeviceAdminSample = new ComponentName(this,DeviceAdminReceiver.class);
    isAdminApp = mDPM.isAdminActive(mDeviceAdminSample);

    if (isAdminApp) {
        try {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                mDPM.setAlwaysOnVpnPackage(mDeviceAdminSample,"",true);
            }
        } catch (PackageManager.NameNotFoundException namenotfoundexception) {
            namenotfoundexception.printstacktrace();
        } catch (Exception ex) {
        }
    }

但它并没有启用始终开启。

我已经添加了包名

mDPM.setAlwaysOnVpnPackage(mDeviceAdminSample,"my.app.package.name",true);

但仍未启用开关。

那么这段代码是做什么的呢? 如何以编程方式启用它?

我希望这个像下图

Always-on VPN

解决方法

根据 docssetAlwaysOnVpnPackage 只能由配置文件所有者(通常是工作配置文件中的 MDM 客户端)或设备所有者(用于完全托管的设备)使用:

由设备或配置文件所有者调用以通过特定应用程序为当前用户配置始终在线的 VPN 连接。重新启动后会自动授予并保留此连接。

作为个人资料用户 - 我不希望我的 VPN 自行决定何时连接(如果正确实施,以编程方式设置始终开启将立即连接 VPN)。

作为工作资料用户(戴着员工的帽子),这不是我的决定,而是我的组织(通过资料所有者应用)。

所以,总而言之,这种行为是有道理的。

更新:

您可以克隆、构建和调试 Google 的 Test DPC 应用,而不是实施可能需要大量工作的 MDM,该应用具有测试以编程方式切换始终开启的 VPN 所需的一切。>

它还有数百万个你不需要的东西,所以一定要忽略其余的 :)

我没有看过他们的代码,但我建议搜索 setAlwaysOnVpnPackage 函数的用法。

Google 的测试 DPC 应用:

  • Link 到 Play 商店
  • Link 到 GitHub 存储库(自行构建和调试)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?