mirror of
https://github.com/wgtunnel/android.git
synced 2026-07-03 14:07:49 +02:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ca3f3fd439 | |||
| 235170508b |
@@ -2,35 +2,37 @@
|
||||
WG Tunnel
|
||||
</h1>
|
||||
|
||||
<span align="center">
|
||||
<div align="center">
|
||||
|
||||
[](https://opensource.org/licenses/MIT)
|
||||
[](https://discord.gg/rbRRNh6H7V)
|
||||
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<span align="center">
|
||||
<div align="center">
|
||||
|
||||
|
||||
[](https://play.google.com/store/apps/details?id=com.zaneschepke.wireguardautotunnel)
|
||||
[](https://www.amazon.com/gp/product/B0CFGGL7WK)
|
||||
[](https://f-droid.org/packages/com.zaneschepke.wireguardautotunnel/)
|
||||
|
||||
</span>
|
||||
|
||||
<span align="center">
|
||||
</div>
|
||||
|
||||
<div align="center">
|
||||
|
||||
[](https://ko-fi.com/N4N8NMJN2)
|
||||
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
||||
<span align="left">
|
||||
<div align="left">
|
||||
|
||||
This is an alternative Android Application for [WireGuard](https://www.wireguard.com/) with added features. Built using the [wireguard-android](https://github.com/WireGuard/wireguard-android) library and [Jetpack Compose](https://developer.android.com/jetpack/compose), this application was inspired by the official [WireGuard Android](https://github.com/WireGuard/wireguard-android) app.
|
||||
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<span align="center">
|
||||
<div align="center">
|
||||
|
||||
## Screenshots
|
||||
|
||||
@@ -41,7 +43,7 @@ This is an alternative Android Application for [WireGuard](https://www.wireguard
|
||||
<img label="Support" style="padding-left:25px" src="asset/support_screen.png" width="200" />
|
||||
</p>
|
||||
|
||||
<span align="left">
|
||||
<div align="left">
|
||||
|
||||
## Inspiration
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@ android {
|
||||
applicationId = "com.zaneschepke.wireguardautotunnel"
|
||||
minSdk = 26
|
||||
targetSdk = 34
|
||||
versionCode = 30002
|
||||
versionName = "3.0.2"
|
||||
versionCode = 30003
|
||||
versionName = "3.0.3"
|
||||
|
||||
multiDexEnabled = true
|
||||
|
||||
|
||||
@@ -12,4 +12,6 @@ object Constants {
|
||||
const val URI_CONTENT_SCHEME = "content"
|
||||
const val URI_PACKAGE_SCHEME = "package"
|
||||
const val ALLOWED_FILE_TYPES = "*/*"
|
||||
const val FILES_SHOW_ADVANCED = "android.content.extra.SHOW_ADVANCED"
|
||||
const val ANDROID_TV_STUBS = "com.google.android.tv.frameworkpackagestubs"
|
||||
}
|
||||
+10
-5
@@ -210,15 +210,20 @@ fun MainScreen(
|
||||
.fillMaxWidth()
|
||||
.clickable {
|
||||
showBottomSheet = false
|
||||
val fileSelectionIntent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
|
||||
val fileSelectionIntent = Intent(Intent.ACTION_GET_CONTENT).apply {
|
||||
addCategory(Intent.CATEGORY_OPENABLE)
|
||||
putExtra(Constants.FILES_SHOW_ADVANCED, true)
|
||||
type = Constants.ALLOWED_FILE_TYPES
|
||||
}
|
||||
if (fileSelectionIntent.resolveActivity(context.packageManager) != null) {
|
||||
pickFileLauncher.launch(fileSelectionIntent)
|
||||
} else {
|
||||
viewModel.showSnackBarMessage(context.getString(R.string.no_file_app))
|
||||
if(!viewModel.isIntentAvailable(fileSelectionIntent)) {
|
||||
fileSelectionIntent.action = Intent.ACTION_OPEN_DOCUMENT
|
||||
fileSelectionIntent.setPackage(null)
|
||||
if (!viewModel.isIntentAvailable(fileSelectionIntent)) {
|
||||
viewModel.showSnackBarMessage(context.getString(R.string.no_file_app))
|
||||
return@clickable
|
||||
}
|
||||
}
|
||||
pickFileLauncher.launch(fileSelectionIntent)
|
||||
}
|
||||
.padding(10.dp)
|
||||
) {
|
||||
|
||||
+19
@@ -2,6 +2,8 @@ package com.zaneschepke.wireguardautotunnel.ui.screens.main
|
||||
|
||||
import android.app.Application
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.database.Cursor
|
||||
import android.net.Uri
|
||||
import android.provider.OpenableColumns
|
||||
@@ -207,6 +209,23 @@ class MainViewModel @Inject constructor(private val application : Application,
|
||||
return columnIndex
|
||||
}
|
||||
|
||||
fun isIntentAvailable(i: Intent?): Boolean {
|
||||
val packageManager = application.packageManager
|
||||
val list = packageManager.queryIntentActivities(
|
||||
i!!,
|
||||
PackageManager.MATCH_DEFAULT_ONLY
|
||||
)
|
||||
// Ignore the Android TV framework app in the list
|
||||
var size = list.size
|
||||
for (ri in list) {
|
||||
// Ignore stub apps
|
||||
if (Constants.ANDROID_TV_STUBS == ri.activityInfo.packageName) {
|
||||
size--
|
||||
}
|
||||
}
|
||||
return size > 0
|
||||
}
|
||||
|
||||
private fun getDisplayNameByCursor(cursor: Cursor) : String {
|
||||
if(cursor.moveToFirst()) {
|
||||
val index = getDisplayNameColumnIndex(cursor)
|
||||
|
||||
Reference in New Issue
Block a user