以编程方式开启永远在线的 VPN android
Always-on VPN switch on programmatically 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);
但仍未启用开关。
那这段代码是做什么的呢?
我如何以编程方式启用它?
我希望它像下图一样
根据 docs,setAlwaysOnVpnPackage
只能由配置文件所有者(通常是工作配置文件上的 MDM 客户端)或设备所有者(对于完全托管的设备)使用:
Called by a device or profile owner to configure an always-on VPN connection through a specific application for the current user. This connection is automatically granted and persisted after a reboot.
作为个人资料用户 - 我不希望我的 VPN 自行决定何时连接(如果正确实施,以编程方式设置始终开启将立即连接 VPN) .
作为工作资料用户(戴上员工的帽子),这不是我的决定,而是我的组织的(通过资料所有者应用程序)。
所以,总而言之,这种行为是有道理的。
更新:
您可以克隆、构建和调试 Google 的 Test DPC 应用程序,而不是实施可能需要大量工作的 MDM,它拥有您需要的一切以编程方式测试永远在线的 VPN。
它还有数百万其他的东西,你不需要,所以一定要忽略其余的:)
我没有看过他们的代码,但我建议搜索 setAlwaysOnVpnPackage
函数的用法。
Google 的 测试 DPC 应用程序:
永远在线的 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);
但仍未启用开关。
那这段代码是做什么的呢? 我如何以编程方式启用它?
我希望它像下图一样
根据 docs,setAlwaysOnVpnPackage
只能由配置文件所有者(通常是工作配置文件上的 MDM 客户端)或设备所有者(对于完全托管的设备)使用:
Called by a device or profile owner to configure an always-on VPN connection through a specific application for the current user. This connection is automatically granted and persisted after a reboot.
作为个人资料用户 - 我不希望我的 VPN 自行决定何时连接(如果正确实施,以编程方式设置始终开启将立即连接 VPN) .
作为工作资料用户(戴上员工的帽子),这不是我的决定,而是我的组织的(通过资料所有者应用程序)。
所以,总而言之,这种行为是有道理的。
更新:
您可以克隆、构建和调试 Google 的 Test DPC 应用程序,而不是实施可能需要大量工作的 MDM,它拥有您需要的一切以编程方式测试永远在线的 VPN。
它还有数百万其他的东西,你不需要,所以一定要忽略其余的:)
我没有看过他们的代码,但我建议搜索 setAlwaysOnVpnPackage
函数的用法。
Google 的 测试 DPC 应用程序: