aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/org/pacien/tincapp/activities/LaunchActivity.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/org/pacien/tincapp/activities/LaunchActivity.kt')
-rw-r--r--app/src/main/java/org/pacien/tincapp/activities/LaunchActivity.kt62
1 files changed, 62 insertions, 0 deletions
diff --git a/app/src/main/java/org/pacien/tincapp/activities/LaunchActivity.kt b/app/src/main/java/org/pacien/tincapp/activities/LaunchActivity.kt
new file mode 100644
index 0000000..6eb630d
--- /dev/null
+++ b/app/src/main/java/org/pacien/tincapp/activities/LaunchActivity.kt
@@ -0,0 +1,62 @@
1package org.pacien.tincapp.activities
2
3import android.app.Activity
4import android.content.Intent
5import android.net.Uri
6import android.net.VpnService
7import android.os.Bundle
8import org.pacien.tincapp.context.App
9import org.pacien.tincapp.intent.action.ACTION_CONNECT
10import org.pacien.tincapp.intent.action.ACTION_DISCONNECT
11import org.pacien.tincapp.intent.action.TINC_SCHEME
12import org.pacien.tincapp.service.TincVpnService
13
14/**
15 * @author pacien
16 */
17class LaunchActivity : Activity() {
18
19 override fun onCreate(savedInstanceState: Bundle?) {
20 super.onCreate(savedInstanceState)
21
22 when (intent.action) {
23 ACTION_CONNECT -> requestPerm()
24 ACTION_DISCONNECT -> disconnect()
25 }
26 }
27
28 override fun onActivityResult(request: Int, result: Int, data: Intent?) {
29 if (result == Activity.RESULT_OK) TincVpnService.startVpn(intent.data.schemeSpecificPart)
30 finish()
31 }
32
33 private fun requestPerm() = VpnService.prepare(this).let {
34 if (it != null)
35 startActivityForResult(it, 0)
36 else
37 onActivityResult(0, Activity.RESULT_OK, null)
38 }
39
40 private fun disconnect() {
41 TincVpnService.stopVpn()
42 finish()
43 }
44
45 companion object {
46
47 fun connect(netName: String) {
48 App.getContext().startActivity(Intent(App.getContext(), LaunchActivity::class.java)
49 .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
50 .setAction(ACTION_CONNECT)
51 .setData(Uri.Builder().scheme(TINC_SCHEME).opaquePart(netName).build()))
52 }
53
54 fun disconnect() {
55 App.getContext().startActivity(Intent(App.getContext(), LaunchActivity::class.java)
56 .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
57 .setAction(ACTION_DISCONNECT))
58 }
59
60 }
61
62}