Change android notification permission

This commit is contained in:
problematicconsumer
2023-09-10 20:19:54 +03:30
parent 778db2dd83
commit 62281b31ce

View File

@@ -1,8 +1,14 @@
package com.hiddify.hiddify
import android.annotation.SuppressLint
import android.content.Intent
import android.Manifest
import android.content.pm.PackageManager
import android.net.VpnService
import android.os.Build
import android.util.Log
import androidx.core.app.ActivityCompat
import androidx.core.app.NotificationManagerCompat
import androidx.core.content.ContextCompat
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.lifecycleScope
@@ -18,6 +24,7 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.util.LinkedList
class MainActivity : FlutterFragmentActivity(), ServiceConnection.Callback {
companion object {
private const val TAG = "ANDROID/MyActivity"
@@ -52,7 +59,8 @@ class MainActivity : FlutterFragmentActivity(), ServiceConnection.Callback {
fun startService() {
if (!ServiceNotification.checkPermission()) {
Log.d(TAG, "missing notification permission")
// Log.d(TAG, "missing notification permission")
grantNotificationPermission()
return
}
lifecycleScope.launch(Dispatchers.IO) {
@@ -123,6 +131,29 @@ class MainActivity : FlutterFragmentActivity(), ServiceConnection.Callback {
super.onDestroy()
}
@SuppressLint("NewApi")
private fun grantNotificationPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.POST_NOTIFICATIONS),
NOTIFICATION_PERMISSION_REQUEST_CODE
)
}
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
if (requestCode == NOTIFICATION_PERMISSION_REQUEST_CODE) {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
startService()
} else onServiceAlert(Alert.RequestNotificationPermission, null)
}
}
private suspend fun prepare() = withContext(Dispatchers.Main) {
try {
val intent = VpnService.prepare(this@MainActivity)