11package com.nervosnetwork.ckblightclient
22
3+ import android.Manifest
4+ import android.content.pm.PackageManager
5+ import android.os.Build
36import android.os.Bundle
47import android.util.Log
58import androidx.appcompat.app.AppCompatActivity
9+ import androidx.core.app.ActivityCompat
10+ import androidx.core.content.ContextCompat
611import androidx.fragment.app.Fragment
712import com.google.android.material.bottomnavigation.BottomNavigationView
813import com.nervosnetwork.ckblightclient.fragments.LogsFragment
@@ -15,6 +20,7 @@ class MainActivity : AppCompatActivity() {
1520
1621 companion object {
1722 const val CONFIG_NAME = " mainnet.toml"
23+ private const val NOTIFICATION_PERMISSION_REQUEST_CODE = 1001
1824 }
1925
2026 override fun onCreate (savedInstanceState : Bundle ? ) {
@@ -23,6 +29,9 @@ class MainActivity : AppCompatActivity() {
2329
2430 bottomNavigation = findViewById(R .id.bottom_navigation)
2531
32+ // Request notification permission for Android 13+
33+ requestNotificationPermission()
34+
2635 // Setup binary and config
2736 setupBinaryAndConfig()
2837
@@ -47,6 +56,39 @@ class MainActivity : AppCompatActivity() {
4756 }
4857 }
4958
59+ private fun requestNotificationPermission () {
60+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .TIRAMISU ) {
61+ if (ContextCompat .checkSelfPermission(
62+ this ,
63+ Manifest .permission.POST_NOTIFICATIONS
64+ ) != PackageManager .PERMISSION_GRANTED
65+ ) {
66+ ActivityCompat .requestPermissions(
67+ this ,
68+ arrayOf(Manifest .permission.POST_NOTIFICATIONS ),
69+ NOTIFICATION_PERMISSION_REQUEST_CODE
70+ )
71+ }
72+ }
73+ }
74+
75+ override fun onRequestPermissionsResult (
76+ requestCode : Int ,
77+ permissions : Array <out String >,
78+ grantResults : IntArray
79+ ) {
80+ super .onRequestPermissionsResult(requestCode, permissions, grantResults)
81+ when (requestCode) {
82+ NOTIFICATION_PERMISSION_REQUEST_CODE -> {
83+ if (grantResults.isNotEmpty() && grantResults[0 ] == PackageManager .PERMISSION_GRANTED ) {
84+ Log .d(TAG , " Notification permission granted" )
85+ } else {
86+ Log .w(TAG , " Notification permission denied - foreground service notification will not show" )
87+ }
88+ }
89+ }
90+ }
91+
5092 private fun loadFragment (fragment : Fragment ) {
5193 supportFragmentManager.beginTransaction()
5294 .replace(R .id.fragment_container, fragment)
0 commit comments