@@ -19,6 +19,7 @@ import androidx.activity.result.ActivityResultLauncher
1919import androidx.activity.result.contract.ActivityResultContracts
2020import androidx.annotation.RequiresApi
2121import androidx.appcompat.app.AppCompatActivity
22+ import androidx.core.app.ActivityCompat
2223import androidx.core.content.ContextCompat
2324import androidx.core.view.ViewCompat
2425import androidx.core.view.WindowInsetsCompat
@@ -39,6 +40,7 @@ class MainActivity : AppCompatActivity(), CallLogAdapter.OnItemChangedListener {
3940 private var permissionDeniedDialog: AlertDialog ? = null
4041 private var callLogAdapter: CallLogAdapter ? = null
4142 private var recyclerView: RecyclerView ? = null
43+ private val REQUEST_CODE_PERMISSIONS = 1
4244
4345 override fun onCreate (savedInstanceState : Bundle ? ) {
4446 super .onCreate(savedInstanceState)
@@ -155,9 +157,21 @@ class MainActivity : AppCompatActivity(), CallLogAdapter.OnItemChangedListener {
155157 }
156158 val missingPermissions = permissions.filter {
157159 ContextCompat .checkSelfPermission(this , it) != PackageManager .PERMISSION_GRANTED
160+ && ActivityCompat .shouldShowRequestPermissionRationale(this , it)
161+ }
162+ val deniedPermissions = permissions.filter {
163+ ContextCompat .checkSelfPermission(this , it) != PackageManager .PERMISSION_GRANTED
164+ && ! ActivityCompat .shouldShowRequestPermissionRationale(this , it)
158165 }
159166 if (missingPermissions.isNotEmpty()) {
160- showPermissionToastAndRequest(missingPermissions)
167+ ActivityCompat .requestPermissions(
168+ this ,
169+ missingPermissions.toTypedArray(),
170+ REQUEST_CODE_PERMISSIONS
171+ )
172+ }
173+ if (deniedPermissions.isNotEmpty()) {
174+ showPermissionToastAndRequest(deniedPermissions)
161175 }
162176 }
163177
@@ -177,6 +191,7 @@ class MainActivity : AppCompatActivity(), CallLogAdapter.OnItemChangedListener {
177191 }
178192
179193 permissionDeniedDialog = AlertDialog .Builder (this )
194+ .setCancelable(false )
180195 .setTitle(R .string.permissions_required_title)
181196 .setMessage(message)
182197 .setPositiveButton(R .string.go_to_settings) { _, _ ->
0 commit comments