Skip to content

Commit

Permalink
Update requested permissions to interact with storage and send notifi…
Browse files Browse the repository at this point in the history
…cations (#351)

As of Android 13, apps will have to request permission to send notifications, and already have access to files in their app-specific directory on external storage
  • Loading branch information
JustAGhost23 committed Feb 24, 2024
1 parent 08e7593 commit 59dad7d
Showing 1 changed file with 50 additions and 16 deletions.
66 changes: 50 additions & 16 deletions app/src/main/java/crux/bphc/cms/activities/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import android.Manifest
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.view.MenuItem
import android.widget.Toast
Expand Down Expand Up @@ -255,19 +256,38 @@ class MainActivity : AppCompatActivity() {
}

private fun askPermission() {
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
val requiredPermissions = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
Manifest.permission.POST_NOTIFICATIONS
}
else {
Manifest.permission.READ_EXTERNAL_STORAGE
}
if (ContextCompat.checkSelfPermission(
this,
requiredPermissions
)
!= PackageManager.PERMISSION_GRANTED
) {

// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_EXTERNAL_STORAGE)) {
if (ActivityCompat.shouldShowRequestPermissionRationale(
this,
requiredPermissions
)
) {
val messageText = if (requiredPermissions == Manifest.permission.READ_EXTERNAL_STORAGE) {
"We need permission to move course content"
}
else {
"We need permission to send course notifications"
}
MaterialAlertDialogBuilder(this)
.setTitle("Permission required")
.setMessage("We need permission to move course content")
.setPositiveButton("OK") { _, _ ->
requestReadStoragePermission()
}
.show()
.setTitle("Permission required")
.setMessage(messageText)
.setPositiveButton("OK") { _, _ ->
requestReadStoragePermission()
}
.show()
} else {
requestReadStoragePermission()
}
Expand All @@ -276,14 +296,28 @@ class MainActivity : AppCompatActivity() {
}
}

private val askPermission = registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { granted ->
if (granted.containsValue(false))
askPermission()
else
startDataMigrationIfRequired()
}

private fun requestReadStoragePermission() {
val askPermission = registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
if (!granted)
askPermission()
else
startDataMigrationIfRequired()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
askPermission.launch(
arrayOf(
Manifest.permission.POST_NOTIFICATIONS,
)
)
}
else {
askPermission.launch(
arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE
)
)
}
askPermission.launch(Manifest.permission.READ_EXTERNAL_STORAGE)
}

private fun startDataMigrationIfRequired() {
Expand Down

0 comments on commit 59dad7d

Please sign in to comment.