diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-09-23 14:37:15 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-09-23 17:56:37 +0200 |
commit | 15da17b5952a76a52089a5d7b503e60b43a7ca50 (patch) | |
tree | 0125b563ff70a83d0a5023b811bf089ee8f4b8bb /ui | |
parent | b3c43e428f98a3b9b32e404ca7ff958d2f05b03b (diff) |
tv: use system picker for API 29+
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'ui')
-rw-r--r-- | ui/src/main/java/com/wireguard/android/activity/TvMainActivity.kt | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/ui/src/main/java/com/wireguard/android/activity/TvMainActivity.kt b/ui/src/main/java/com/wireguard/android/activity/TvMainActivity.kt index 004d26e0..32fbe387 100644 --- a/ui/src/main/java/com/wireguard/android/activity/TvMainActivity.kt +++ b/ui/src/main/java/com/wireguard/android/activity/TvMainActivity.kt @@ -46,6 +46,14 @@ import kotlinx.coroutines.withContext import java.io.File class TvMainActivity : AppCompatActivity() { + private val tunnelFileImportResultLauncher = registerForActivityResult(ActivityResultContracts.GetContent()) { data -> + if (data == null) return@registerForActivityResult + lifecycleScope.launch { + TunnelImporter.importTunnel(contentResolver, data) { + Toast.makeText(this@TvMainActivity, it, Toast.LENGTH_LONG).show() + } + } + } private var pendingTunnel: ObservableTunnel? = null private val permissionActivityResultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { val tunnel = pendingTunnel @@ -145,16 +153,22 @@ class TvMainActivity : AppCompatActivity() { } binding.importButton.setOnClickListener { - if (filesRoot.get()?.isEmpty() != false) { - navigateTo(myComputerFile) - runOnUiThread { - binding.filesList.requestFocus() - } - } else { - files.clear() - filesRoot.set("") - runOnUiThread { - binding.tunnelList.requestFocus() + try { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) + throw Exception() + tunnelFileImportResultLauncher.launch("*/*") + } catch (_: Throwable) { + if (filesRoot.get()?.isEmpty() != false) { + navigateTo(myComputerFile) + runOnUiThread { + binding.filesList.requestFocus() + } + } else { + files.clear() + filesRoot.set("") + runOnUiThread { + binding.tunnelList.requestFocus() + } } } } |