aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/org/pacien/tincapp/activities/PromptActivity.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/org/pacien/tincapp/activities/PromptActivity.kt')
-rw-r--r--app/src/main/java/org/pacien/tincapp/activities/PromptActivity.kt49
1 files changed, 49 insertions, 0 deletions
diff --git a/app/src/main/java/org/pacien/tincapp/activities/PromptActivity.kt b/app/src/main/java/org/pacien/tincapp/activities/PromptActivity.kt
new file mode 100644
index 0000000..6906ead
--- /dev/null
+++ b/app/src/main/java/org/pacien/tincapp/activities/PromptActivity.kt
@@ -0,0 +1,49 @@
1package org.pacien.tincapp.activities
2
3import android.app.Activity
4import android.content.Intent
5import android.net.VpnService
6import android.os.Bundle
7import org.pacien.tincapp.context.App
8import org.pacien.tincapp.service.TincVpnService
9
10/**
11 * @author pacien
12 */
13class PromptActivity : Activity() {
14
15 override fun onCreate(savedInstanceState: Bundle?) {
16 super.onCreate(savedInstanceState)
17
18 when (intent.getSerializableExtra(INTENT_EXTRA_ACTION) as Action) {
19 Action.REQUEST_PERMISSION -> requestVpnPermission()
20 }
21 }
22
23 override fun onActivityResult(request: Int, result: Int, data: Intent?) {
24 if (result == Activity.RESULT_OK) TincVpnService.startVpn(intent.getStringExtra(INTENT_EXTRA_NET_NAME))
25 finish()
26 }
27
28 private fun requestVpnPermission() = VpnService.prepare(this).let {
29 if (it != null)
30 startActivityForResult(it, 0)
31 else
32 onActivityResult(0, Activity.RESULT_OK, Intent())
33 }
34
35 companion object {
36 private val INTENT_EXTRA_ACTION = "action"
37 private val INTENT_EXTRA_NET_NAME = "netName"
38
39 private enum class Action { REQUEST_PERMISSION }
40
41 fun requestVpnPermission(netName: String) {
42 App.getContext().startActivity(Intent(App.getContext(), PromptActivity::class.java)
43 .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
44 .putExtra(INTENT_EXTRA_ACTION, Action.REQUEST_PERMISSION)
45 .putExtra(INTENT_EXTRA_NET_NAME, netName))
46 }
47 }
48
49}