@@ -15,8 +15,8 @@ import androidx.core.content.ContextCompat
15
15
import io.treehouses.remote.R
16
16
17
17
abstract class PermissionActivity : AppCompatActivity () {
18
- private fun checkPermission (strPermission : String? ): Boolean {
19
- val result = ContextCompat .checkSelfPermission(this , strPermission!! )
18
+ private fun checkPermission (strPermission : String ): Boolean {
19
+ val result = ContextCompat .checkSelfPermission(this , strPermission)
20
20
return result == PackageManager .PERMISSION_GRANTED
21
21
}
22
22
@@ -30,31 +30,28 @@ abstract class PermissionActivity : AppCompatActivity() {
30
30
private fun buildAlertMessageNoGps () {
31
31
val builder = AlertDialog .Builder (ContextThemeWrapper (this , R .style.CustomAlertDialogStyle ))
32
32
builder.setMessage(" Your GPS seems to be disabled, do you want to enable it?" )
33
- .setCancelable(false )
34
- .setPositiveButton(" Yes" ) { _: DialogInterface ? , _: Int -> startActivity(Intent (Settings .ACTION_LOCATION_SOURCE_SETTINGS )) }
35
- .setNegativeButton(" No" ) { dialog: DialogInterface , _: Int -> dialog.cancel() }
33
+ .setCancelable(false )
34
+ .setPositiveButton(" Yes" ) { _, _ -> startActivity(Intent (Settings .ACTION_LOCATION_SOURCE_SETTINGS )) }
35
+ .setNegativeButton(" No" ) { dialog, _ -> dialog.cancel() }
36
36
val alert = builder.create()
37
- alert.window!! .setBackgroundDrawableResource(android.R .color.transparent)
37
+ alert.window? .setBackgroundDrawableResource(android.R .color.transparent)
38
38
alert.show()
39
39
}
40
40
41
41
fun requestPermission () {
42
- if (! checkPermission(Manifest .permission.ACCESS_FINE_LOCATION ) ||
43
- ! checkPermission(Manifest .permission.ACCESS_COARSE_LOCATION ) ||
44
- ! checkPermission(Manifest .permission.CHANGE_WIFI_STATE ) ||
45
- ! checkPermission(Manifest .permission.BLUETOOTH ) ||
46
- ! checkPermission(Manifest .permission.BLUETOOTH_ADMIN ) ||
47
- ! checkPermission(Manifest .permission.BLUETOOTH_CONNECT ) ||
48
- ! checkPermission(Manifest .permission.BLUETOOTH_CONNECT )) {
49
- ActivityCompat .requestPermissions(this , arrayOf(
50
- Manifest .permission.CHANGE_WIFI_STATE ,
51
- Manifest .permission.ACCESS_FINE_LOCATION ,
52
- Manifest .permission.ACCESS_COARSE_LOCATION ,
53
- Manifest .permission.BLUETOOTH ,
54
- Manifest .permission.BLUETOOTH_ADMIN ,
55
- Manifest .permission.BLUETOOTH_CONNECT ,
56
- Manifest .permission.BLUETOOTH_SCAN ,
57
- ), PERMISSION_REQUEST_WIFI )
42
+ val permissionsToRequest = mutableListOf (
43
+ Manifest .permission.CHANGE_WIFI_STATE , Manifest .permission.ACCESS_FINE_LOCATION ,
44
+ Manifest .permission.ACCESS_COARSE_LOCATION , Manifest .permission.BLUETOOTH ,
45
+ Manifest .permission.BLUETOOTH_ADMIN , Manifest .permission.BLUETOOTH_CONNECT ,
46
+ Manifest .permission.BLUETOOTH_SCAN
47
+ )
48
+
49
+ if (android.os.Build .VERSION .SDK_INT >= android.os.Build .VERSION_CODES .TIRAMISU && ! checkPermission(Manifest .permission.POST_NOTIFICATIONS )) {
50
+ permissionsToRequest.add(Manifest .permission.POST_NOTIFICATIONS )
51
+ }
52
+
53
+ if (permissionsToRequest.any { ! checkPermission(it) }) {
54
+ ActivityCompat .requestPermissions(this , permissionsToRequest.toTypedArray(), PERMISSION_REQUEST_WIFI )
58
55
} else {
59
56
statusCheck()
60
57
}
@@ -63,8 +60,7 @@ abstract class PermissionActivity : AppCompatActivity() {
63
60
override fun onRequestPermissionsResult (requestCode : Int , permissions : Array <String >, grantResults : IntArray ) {
64
61
super .onRequestPermissionsResult(requestCode, permissions, grantResults)
65
62
if (requestCode == PERMISSION_REQUEST_WIFI ) {
66
- if (grantResults.isNotEmpty()
67
- && grantResults[0 ] == PackageManager .PERMISSION_GRANTED ) {
63
+ if (grantResults.isNotEmpty() && grantResults.all { it == PackageManager .PERMISSION_GRANTED }) {
68
64
statusCheck()
69
65
}
70
66
}
0 commit comments