feat: improve notification permission request #210
2 changed files with 22 additions and 9 deletions
|
@ -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
|
||||||
|
@ -15,7 +16,9 @@ import android.view.Menu
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.ProgressBar
|
import android.widget.ProgressBar
|
||||||
|
import android.widget.Toast
|
||||||
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 +128,23 @@ 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_rationale_title)
|
||||||
|
.setMessage(R.string.notification_permission_request_rationale_message)
|
||||||
|
.setNegativeButton(android.R.string.cancel, null)
|
||||||
|
.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 +219,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()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
|
|
||||||
<string name="notification_help">Help</string>
|
<string name="notification_help">Help</string>
|
||||||
|
|
||||||
|
<string name="notification_permission_request_rationale_title">Notification Permission Required</string>
|
||||||
|
<string name="notification_permission_request_rationale_message">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>
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue