mirror of
https://github.com/yggdrasil-network/yggdrasil-android.git
synced 2025-04-27 21:55:08 +03:00
request POST_NOTIFICATIONS permission
This commit is contained in:
parent
8dfa2f638a
commit
22886edcb1
4 changed files with 38 additions and 4 deletions
|
@ -10,8 +10,8 @@ android {
|
|||
applicationId "eu.neilalexander.yggdrasil"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 33
|
||||
versionCode 15
|
||||
versionName "0.1-015"
|
||||
versionCode 16
|
||||
versionName "0.1-016"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
@ -55,6 +55,7 @@ dependencies {
|
|||
implementation 'com.google.android.material:material:1.5.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
||||
implementation 'androidx.preference:preference-ktx:1.2.1'
|
||||
implementation 'com.guolindev.permissionx:permissionx:1.7.1'
|
||||
testImplementation 'junit:junit:4.+'
|
||||
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
package eu.neilalexander.yggdrasil
|
||||
|
||||
import android.Manifest
|
||||
import android.app.Activity
|
||||
import android.content.*
|
||||
import android.graphics.Color
|
||||
import android.net.VpnService
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.widget.Switch
|
||||
import android.widget.TextView
|
||||
|
@ -14,6 +16,7 @@ import androidx.appcompat.widget.LinearLayoutCompat
|
|||
import androidx.core.content.edit
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
||||
import androidx.preference.PreferenceManager
|
||||
import com.permissionx.guolindev.PermissionX
|
||||
import eu.neilalexander.yggdrasil.PacketTunnelProvider.Companion.STATE_INTENT
|
||||
import mobile.Mobile
|
||||
import org.json.JSONArray
|
||||
|
@ -37,6 +40,31 @@ class MainActivity : AppCompatActivity() {
|
|||
startService(intent)
|
||||
}
|
||||
|
||||
private fun checkNotificationPermission() {
|
||||
PermissionX.init(this)
|
||||
.permissions(
|
||||
Manifest.permission.POST_NOTIFICATIONS,
|
||||
)
|
||||
.onExplainRequestReason { scope, deniedList ->
|
||||
scope.showRequestReasonDialog(
|
||||
deniedList,
|
||||
getString(R.string.explain_ntfn_perms),
|
||||
getString(R.string.ok),
|
||||
getString(R.string.cancel),
|
||||
)
|
||||
}
|
||||
.onForwardToSettings { scope, deniedList ->
|
||||
scope.showForwardToSettingsDialog(
|
||||
deniedList,
|
||||
getString(R.string.manual_ntfn_perms),
|
||||
getString(R.string.ok),
|
||||
getString(R.string.cancel),
|
||||
)
|
||||
}
|
||||
.request { _, _, _ -> {}
|
||||
}
|
||||
}
|
||||
|
||||
private var startVpnActivity = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
|
||||
if (result.resultCode == Activity.RESULT_OK) {
|
||||
start()
|
||||
|
@ -65,6 +93,7 @@ class MainActivity : AppCompatActivity() {
|
|||
enabledSwitch.setOnCheckedChangeListener { _, isChecked ->
|
||||
when (isChecked) {
|
||||
true -> {
|
||||
checkNotificationPermission()
|
||||
val vpnIntent = VpnService.prepare(this)
|
||||
if (vpnIntent != null) {
|
||||
startVpnActivity.launch(vpnIntent)
|
||||
|
|
|
@ -42,6 +42,8 @@
|
|||
<string name="settings_reset">Сброс</string>
|
||||
<string name="main_status">Состояние</string>
|
||||
<string name="main_enable_yggdrasil">Включить Yggdrasil</string>
|
||||
<string name="explain_ntfn_perms">Пожалуйста включите нотификации чтобы видеть статус подключения Yggdrasil</string>
|
||||
<string name="manual_ntfn_perms">Чтобы видеть статус подключения Yggdrasil, включите нотификации в настройках</string>
|
||||
<string name="main_statistics">Статистика</string>
|
||||
<string name="main_not_available">Н/Д</string>
|
||||
<string name="main_ip">Адрес</string>
|
||||
|
@ -83,4 +85,4 @@
|
|||
<string name="private_key_label">Приватный ключ:</string>
|
||||
<string name="set_keys">Установить свой ключ</string>
|
||||
<string name="save">Сохранить</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -42,6 +42,8 @@
|
|||
<string name="settings_reset">Reset</string>
|
||||
<string name="main_status">Status</string>
|
||||
<string name="main_enable_yggdrasil">Enable Yggdrasil</string>
|
||||
<string name="explain_ntfn_perms">Please enable notifications to easily see Yggdrasil connection status</string>
|
||||
<string name="manual_ntfn_perms">To see Yggdrasil connection status, enable notifications in app settings</string>
|
||||
<string name="main_statistics">Statistics</string>
|
||||
<string name="main_not_available">N/A</string>
|
||||
<string name="main_ip">IP</string>
|
||||
|
@ -83,4 +85,4 @@
|
|||
<string name="private_key_label">Private key:</string>
|
||||
<string name="set_keys">Set your own key</string>
|
||||
<string name="save">Save</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue