@@ -5,14 +5,15 @@ import android.content.Intent
55import android.content.pm.PackageManager
66import android.net.Uri
77import android.provider.Settings
8+ import androidx.activity.ComponentActivity
89import androidx.activity.result.contract.ActivityResultContracts
910import androidx.fragment.app.Fragment
1011import com.w2sv.autocrop.R
1112import de.mateware.snacky.Snacky
1213import timber.log.Timber
1314
1415class PermissionsHandler (
15- private val fragment : Fragment ,
16+ private val activity : ComponentActivity ,
1617 private val requiredPermissions : Array <String >,
1718 private val snackbarMessageOnPermissionDenial : String ,
1819 private val snackbarMessageOnRequestSuppression : String ){
@@ -23,15 +24,15 @@ class PermissionsHandler(
2324 */
2425 private val pendingPermissions: List <String >
2526 get() = requiredPermissions.filter {
26- nonRedundantManifestPermissions.contains(it) && ! fragment.requireActivity() .permissionGranted(it)
27+ nonRedundantManifestPermissions.contains(it) && ! activity .permissionGranted(it)
2728 }
2829
2930 /* *
3031 * Returns the permissions declared within package Manifest actually required by the api,
3132 * that is whose maxSdkVersion (also manually declared in Manifest) <= Build version
3233 */
3334 private val nonRedundantManifestPermissions: Array <String > by lazy {
34- fragment.requireContext() .run {
35+ activity .run {
3536 packageManager.getPackageInfo(packageName, PackageManager .GET_PERMISSIONS )
3637 .requestedPermissions ? : arrayOf()
3738 }
@@ -49,7 +50,7 @@ class PermissionsHandler(
4950 permissionRequestContract.launch(pendingPermissions.toTypedArray())
5051 }
5152
52- private val permissionRequestContract = fragment .registerForActivityResult(
53+ private val permissionRequestContract = activity .registerForActivityResult(
5354 ActivityResultContracts .RequestMultiplePermissions ()
5455 ){ onRequestPermissionsResult(it) }
5556
@@ -64,7 +65,7 @@ class PermissionsHandler(
6465 */
6566 private fun onRequestPermissionsResult (permission2Granted : Map <String , Boolean >){
6667 if (permission2Granted.values.any { ! it }){
67- fragment.requireActivity() .run {
68+ activity .run {
6869 if (shouldShowRequestPermissionRationale)
6970 permissionDeniedSnacky()
7071 else
@@ -81,7 +82,7 @@ class PermissionsHandler(
8182 }
8283
8384 private val shouldShowRequestPermissionRationale: Boolean
84- get() = fragment .shouldShowRequestPermissionRationale(pendingPermissions[0 ])
85+ get() = activity .shouldShowRequestPermissionRationale(pendingPermissions[0 ])
8586
8687 private fun Activity.permissionDeniedSnacky (): Snacky .Builder =
8788 snacky(
@@ -96,14 +97,14 @@ class PermissionsHandler(
9697 )
9798 .setActionText(" Settings" )
9899 .setActionClickListener {
99- fragment .startActivity(
100+ activity .startActivity(
100101 Intent (Settings .ACTION_APPLICATION_DETAILS_SETTINGS )
101102 .apply {
102- data = Uri .fromParts(" package" , fragment.requireContext() .packageName, null )
103+ data = Uri .fromParts(" package" , activity .packageName, null )
103104 }
104105 )
105106 }
106- }
107107
108- private fun Activity.permissionGranted (permission : String ): Boolean =
109- checkSelfPermission(permission) == PackageManager .PERMISSION_GRANTED
108+ private fun Activity.permissionGranted (permission : String ): Boolean =
109+ checkSelfPermission(permission) == PackageManager .PERMISSION_GRANTED
110+ }
0 commit comments