一个应用程序我设计使用VpnService,与VpnService.Builder一起,班为了从特定的应用程序堵塞交通产生VPN。根据该文件,在上developer.android.com,所有的应用程序应该通过VPN直到Builder.AddAllowedApplication或Builder.AddDisallowedApplication允许被调用。
当我的VPN服务启动时,由于某种原因,所有的应用程序被禁止这是奇怪的。当我从断开VPN连接,所有的应用程序再次可用。我需要让所有,除非另有规定(这是什么文件说,应该发生)。我通过调用以下启动VPN:
private string _sTag = typeof(VpnService).Name;
private VpnServiceBinder _objBinder;
private ParcelFileDescriptor _objVpnInterface = null;
private PendingIntent _objPendingIntent = null;
...
if (_objVpnInterface == null)
{
Builder objVpnBuilder = new Builder(this);
objVpnBuilder.AddAddress("10.0.0.2", 32);
objVpnBuilder.AddRoute("0.0.0.0", 0);
// Form the interface
_objVpnInterface = objVpnBuilder.SetSession("Squelch").SetConfigureIntent(_objPendingIntent).Establish();
// Disallow instagram as a test
objVpnBuilder.AddDisallowedApplication("com.instagram.android");
// Set flag
_bVpnIsRunning = true;
}
因此,在上述情况下,Instagram的应该是唯一阻止应用程序,但所有的流量似乎被阻塞(不能使用Chrome应用,脸谱等)。是有什么我失踪的问候呢?我应该指定前/确立的东西后的界面?任何帮助或方向将不胜感激!
注意:如果它的事项,我瞄准的Android 6.0及更高版本。如果需要,我可以提供更多的来源。
默认情况下,所有的应用程序都允许访问,除了那些通过这种方法否认。仿佛VPN没有运行被拒绝的应用程序将使用网络。
AddDisallowedApplication
排除从您VPNService
应用程序,并允许其继续使用“非VPN”网络堆栈。
补充说,是允许的访问VPN连接的应用程序
注意:您可以在同一时间使用的允许或禁止名单,但不能同时使用。
因此,可以说,我们要“堵”任何Chrome包访问正常网络堆栈和通过我们的“堵” VPN访问网络重定向任何Chrome应用,我们可以添加所有的Chrome应用软件包名我们VPNService
实施。
注意:有4种不同的Chrome应用程式,α,β等....所以让刚刚阻止其名称chrome
在里面,不甚理想,但对于例如,它适用于任何包装(?)。
using (var pm = Application.Context.PackageManager)
{
var packageList = pm.GetInstalledPackages(0);
foreach (var package in packageList)
{
if (package.PackageName.Contains("chrome"))
{
Log.Debug(TAG, package.PackageName);
builder.AddAllowedApplication(package.PackageName);
}
}
}
你.Establish()
VPN连接后,所有Chrome网络应用程序将被重定向到您的VPNService
因而受阻。