微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何知道何时没有活动就准备好Android VPN?

如何解决如何知道何时没有活动就准备好Android VPN?

当您想启动Vpn时,我们可以执行以下操作:

VpnService.prepare(activity)

然后:

override fun onActivityResult(requestCode: Int,resultCode: Int,data: Intent?) {
    super.onActivityResult(requestCode,resultCode,data)
    if (requestCode == REQUEST_VPN && resultCode == AppCompatActivity.RESULT_OK) {
 
        }

    }
}

但是我是在活动之外这样做的:

private void setupVPN() {
     if (vpnInterface == null) {

         jni_context = jni_init(Build.VERSION.SDK_INT);
        Builder builder = new Builder();
        builder.addAddress(VPN_ADDRESS,1);

        vpnInterface = getBuilder().establish();//.setSession(getString(R.string.app_name)).setConfigureIntent(pendingIntent).establish();

        if (vpnInterface != null) {
             startNative();
        } else {
            // vpn Failed to establish,prepare may not call or called but not yey prepared,// we will try 3 times or destroy vpn
            Timber.e("vpnInterface Failed to establish");
            vpnSetupAttempts++;
            if (vpnSetupAttempts < 4) {
                VpnService.prepare(this);
                final Handler handler = new Handler(Looper.getMainLooper());
                handler.postDelayed(this::setupVPN,2000);
            } else {
                vpnSetupAttempts = 0;
                logNonFatalException("vpnInterface Failed to establish");
                stopVpn();

            }
        }

    }
}

所以基本上我是在等待VPN的准备而没有任何指示, 这是可行的,但感觉不是一个好习惯,准备VPN后,还有其他方法可以监听吗?某种听众?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。