diff options
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.kt | 49 |
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 @@ | |||
1 | package org.pacien.tincapp.activities | ||
2 | |||
3 | import android.app.Activity | ||
4 | import android.content.Intent | ||
5 | import android.net.VpnService | ||
6 | import android.os.Bundle | ||
7 | import org.pacien.tincapp.context.App | ||
8 | import org.pacien.tincapp.service.TincVpnService | ||
9 | |||
10 | /** | ||
11 | * @author pacien | ||
12 | */ | ||
13 | class 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 | } | ||