Программно отключить любую службу VPN - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь найти способ отключить любую VPN, которая сейчас подключена другими приложениями.

1- Есть ли способ сделать это?

2- Есть ли способ чтобы повторно подключить последний VPN после его отключения?

Примечание (мои мысли): когда наше приложение пытается включить VPN, если есть другой запущенный VPN, он будет завершен, и наш VPN будет включен. Итак, после этого мы можем отключить нашу службу vpn (SUCCESS). Если это верно, может ли кто-нибудь показать мне, как выполнить описанный выше сценарий?

1 Ответ

0 голосов
/ 08 мая 2020

Я нашел ответ для первой части, но для второй нужна помощь:

class MainActivity : Activity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_empty)
        checkVPN()
    }

    private fun checkVPN() {
        val intent = VpnService.prepare(applicationContext)
        if (intent != null) {
            startActivityForResult(intent, 0)
        } else {
            onActivityResult(0, RESULT_OK, null)
        }
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        if (resultCode == RESULT_OK) {
            val intent = Intent(this, BackgroundService::class.java)
            startServiceCompat(intent)
        }
    }
}

Это отключает все подключенные vpn и впервые просит пользователя подключить vpn, но мы не подключаемся. vpn после этого.

...