如何修复我的 dns only vpn 项目中的建立错误

How to fix establish error in my dns only vpn project

我正在尝试制作一个只有 Dns 的 Vpn。我有一个问题

public void run() {
                try {
                    //a. Configure the TUN and get the interface.
                    mInterface = builder.setSession("MyVPNService")
                            .addAddress("192.168.0.1", 24)
                            .addDnsServer("8.8.8.8")
                            .addRoute("0.0.0.0", 0)
                            .establish();

最后一个建立方法抛出一个异常android.os.RemoteException 就像那样

W/System.err: java.lang.SecurityException: com.example.dnschangervpn.MyVpnService does not require android.permission.BIND_VPN_SERVICE
       at android.os.Parcel.createException(Parcel.java:1966)
       at android.os.Parcel.readException(Parcel.java:1934)
       at android.os.Parcel.readException(Parcel.java:1884)
       at android.net.IConnectivityManager$Stub$Proxy.establishVpn(IConnectivityManager.java:2441)
W/System.err:     at android.net.VpnService$Builder.establish(VpnService.java:993)
       at com.example.dnschangervpn.MyVpnService.run(MyVpnService.java:34)
       at java.lang.Thread.run(Thread.java:764)
   Caused by: android.os.RemoteException: Remote stack trace:
       at com.android.server.connectivity.Vpn.establish(Unknown Source:496)
       at com.android.server.ConnectivityService.establishVpn(Unknown Source:107)
       at android.net.IConnectivityManager$Stub.onTransact(IConnectivityManager.java:640)
       at android.os.Binder.execTransact(Binder.java:739)

我发现我必须向我的服务授予清单许可,所以我这样做了并且成功了。

 <service
            android:name=".MyVpnService"
            android:permission="android.permission.BIND_VPN_SERVICE"
             />