Android VPNService - 如何从我的活动中调出“系统管理的对话框”?

时间:2013-01-11 16:24:36

标签: android service android-activity system vpn

根据this教程,断开vpn服务的唯一方法是使用“系统管理的对话框”。这可以通过向下拖动通知栏并从那里选择来手动完成,但这对我的问题不是一个好的解决方案。

当按下“断开连接”按钮时,我需要能够在我的应用程序中启动此对话框,但是我找不到任何有关如何执行此操作的文档。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

现在,唯一公开和推荐的断开连接的方法是通过通知。不幸的是,隐藏了甚至隐藏对话框的功能。

当然,这并不一定意味着他们无法访问,但这种方式很痛苦。我没有在这个特定情况下试过这个,但是我在过去做过这个,回过头来,用音乐播放器找出正在播放的内容(用于音频scrobbling)。因此,如果你绝对必须找到一种方法来做到这一点,无论多么hacky,那么你可以尝试这一点,但请记住,“只要是龙 - 这涉及访问你不应该访问的私有API。在任何两个给定的android版本(不仅仅是平台版本)之间,该API可能会随心所欲地改变,因为它应该是私有的和内部的。你需要让你的代码在这里对失败非常有弹性,坦率地说,它永远不会只是hacky和PITA。

是的,所有这一切,see line 171 in this

这就是你想要做的。除非你看不到你需要的东西,对吧?所以你需要this AIDL for the service(也可能有点反思,我忘了 - 很久没有这样做了。)

This blog post描述了类似的内容,但不是很详细。很难找到谈论的事情,因为这是一种令人难以置信的沮丧做法。

答案 1 :(得分:0)

我认为关闭tun描述并让服务结束是好的。这将有效终止VPN(但有问题的应用程序仍将拥有再次打开VPN的权限)。通知(关键符号)也将消失。如果您正在尝试另一个可能更难的应用程序的VPNService。也许您应该向该应用的作者询问API。