Change android notification permission
This commit is contained in:
@@ -1,8 +1,14 @@
|
|||||||
package com.hiddify.hiddify
|
package com.hiddify.hiddify
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.Manifest
|
||||||
|
import android.content.pm.PackageManager
|
||||||
import android.net.VpnService
|
import android.net.VpnService
|
||||||
|
import android.os.Build
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
|
import androidx.core.app.ActivityCompat
|
||||||
|
import androidx.core.app.NotificationManagerCompat
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
@@ -18,6 +24,7 @@ import kotlinx.coroutines.launch
|
|||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import java.util.LinkedList
|
import java.util.LinkedList
|
||||||
|
|
||||||
|
|
||||||
class MainActivity : FlutterFragmentActivity(), ServiceConnection.Callback {
|
class MainActivity : FlutterFragmentActivity(), ServiceConnection.Callback {
|
||||||
companion object {
|
companion object {
|
||||||
private const val TAG = "ANDROID/MyActivity"
|
private const val TAG = "ANDROID/MyActivity"
|
||||||
@@ -52,7 +59,8 @@ class MainActivity : FlutterFragmentActivity(), ServiceConnection.Callback {
|
|||||||
|
|
||||||
fun startService() {
|
fun startService() {
|
||||||
if (!ServiceNotification.checkPermission()) {
|
if (!ServiceNotification.checkPermission()) {
|
||||||
Log.d(TAG, "missing notification permission")
|
// Log.d(TAG, "missing notification permission")
|
||||||
|
grantNotificationPermission()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
lifecycleScope.launch(Dispatchers.IO) {
|
lifecycleScope.launch(Dispatchers.IO) {
|
||||||
@@ -123,6 +131,29 @@ class MainActivity : FlutterFragmentActivity(), ServiceConnection.Callback {
|
|||||||
super.onDestroy()
|
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) {
|
private suspend fun prepare() = withContext(Dispatchers.Main) {
|
||||||
try {
|
try {
|
||||||
val intent = VpnService.prepare(this@MainActivity)
|
val intent = VpnService.prepare(this@MainActivity)
|
||||||
|
|||||||
Reference in New Issue
Block a user