Skip to content

Commit 38db642

Browse files
committed
Make PermissionsHandler handle ComponentActivity
1 parent cec987a commit 38db642

File tree

2 files changed

+14
-13
lines changed

2 files changed

+14
-13
lines changed

app/src/main/java/com/autocrop/activities/main/fragments/flowfield/FlowFieldFragment.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class FlowFieldFragment:
4545
R.id.main_menu_item_rate_the_app to ::goToPlayStoreListing,
4646
R.id.main_menu_item_about_the_app to ::invokeAboutFragment
4747
),
48-
requireView().context,
48+
requireContext(),
4949
binding.menuInflationButton
5050
)
5151
}
@@ -121,7 +121,7 @@ class FlowFieldFragment:
121121
}
122122

123123
private val ifPermissionsGranted = PermissionsHandler(
124-
this,
124+
requireActivity(),
125125
arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE),
126126
"You'll have to permit media file access in order for the app to save generated crops",
127127
"Go to app settings and grant media file access in order for the app to save generated crops"

app/src/main/java/com/autocrop/utilsandroid/Permissions.kt renamed to app/src/main/java/com/autocrop/utilsandroid/PermissionsHandler.kt

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,15 @@ import android.content.Intent
55
import android.content.pm.PackageManager
66
import android.net.Uri
77
import android.provider.Settings
8+
import androidx.activity.ComponentActivity
89
import androidx.activity.result.contract.ActivityResultContracts
910
import androidx.fragment.app.Fragment
1011
import com.w2sv.autocrop.R
1112
import de.mateware.snacky.Snacky
1213
import timber.log.Timber
1314

1415
class 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

Comments
 (0)