Compare commits

...

1 commit

Author SHA1 Message Date
80afe37050
feat: improve notification permission request 2025-07-29 10:53:15 +08:00
2 changed files with 20 additions and 9 deletions

View file

@ -1,6 +1,7 @@
package im.angry.openeuicc.ui package im.angry.openeuicc.ui
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.AlertDialog
import android.content.BroadcastReceiver import android.content.BroadcastReceiver
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
@ -16,6 +17,7 @@ import android.view.MenuItem
import android.view.View import android.view.View
import android.widget.ProgressBar import android.widget.ProgressBar
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
import androidx.annotation.RequiresApi
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.adapter.FragmentStateAdapter
@ -125,16 +127,22 @@ open class MainActivity : BaseEuiccAccessActivity(), OpenEuiccContextMarker {
} }
} }
@RequiresApi(Build.VERSION_CODES.TIRAMISU)
private fun ensureNotificationPermissions() { private fun ensureNotificationPermissions() {
val needsNotificationPerms = Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU; val permission = android.Manifest.permission.POST_NOTIFICATIONS
val notificationPermsGranted = if (checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED) return
needsNotificationPerms && checkSelfPermission(android.Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED if (!shouldShowRequestPermissionRationale(permission)) {
if (needsNotificationPerms && !notificationPermsGranted) { requestPermissions(arrayOf(permission), PERMISSION_REQUEST_CODE)
requestPermissions( return
arrayOf(android.Manifest.permission.POST_NOTIFICATIONS),
PERMISSION_REQUEST_CODE
)
} }
AlertDialog.Builder(this)
.setTitle(R.string.notification_permission_request_title)
.setMessage(R.string.notification_permission_request_desc)
.setPositiveButton(android.R.string.ok) { _, _ ->
requestPermissions(arrayOf(permission), PERMISSION_REQUEST_CODE)
}
.create()
.show()
} }
private suspend fun init(fromUsbEvent: Boolean = false) { private suspend fun init(fromUsbEvent: Boolean = false) {
@ -209,7 +217,7 @@ open class MainActivity : BaseEuiccAccessActivity(), OpenEuiccContextMarker {
viewPager.currentItem = 0 viewPager.currentItem = 0
} }
if (pages.size > 0) { if (pages.isNotEmpty() && Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
ensureNotificationPermissions() ensureNotificationPermissions()
} }

View file

@ -5,6 +5,9 @@
<string name="notification_help">Help</string> <string name="notification_help">Help</string>
<string name="notification_permission_request_title">Notification Permission Needed</string>
<string name="notification_permission_request_desc">During the download process, notification permissions are required so that the app does not need to stay in the foreground</string>
<string name="profile_reload_slots">Reload Slots</string> <string name="profile_reload_slots">Reload Slots</string>
<string name="profile_no_enabled_profile">Unknown</string> <string name="profile_no_enabled_profile">Unknown</string>