所以我试图阻止谷歌浏览器访问互联网,而其他应用程序可以这样做。我正在使用 android 提供的 VPNService API。VPN 服务设置正确,但我无法阻止 chrome。
这是-
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
setupVPN();
}
return START_NOT_STICKY;
}
private void setupVPN() {
try {
Builder builder = new Builder();
builder.setSession("MyVPNService")
.addAddress("192.168.0.1", 24)
.addDnsServer("8.8.8.8")
.addRoute("0.0.0.0", 0)
.addDisallowedApplication("com.android.chrome")
.establish();
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
我尝试使用addDisallowedApplication
,但正如 android doc 所说
添加拒绝访问 VPN 连接的应用程序。默认情况下,允许所有应用程序访问,但通过此方法拒绝的应用程序除外。被拒绝的应用程序将使用网络,就好像 VPN 没有运行一样。VpnService.Builder 可能只有一组允许的应用程序或一组不允许的应用程序,但不能同时拥有。在 addAllowedApplication(String) 已被调用后调用此方法,反之亦然,将抛出 UnsupportedOperationException。packageName 必须是当前安装的应用程序的规范名称。如果没有这样的应用程序,则会抛出 PackageManager.NameNotFoundException。
那么如何成功阻止 Chrome 或任何其他应用程序呢?