1
1
package com.lassi.presentation.docs
2
2
3
+ import android.Manifest
3
4
import android.app.Activity
4
5
import android.content.Intent
6
+ import android.content.pm.PackageManager
5
7
import android.graphics.PorterDuff
8
+ import android.net.Uri
9
+ import android.os.Build
6
10
import android.os.Bundle
11
+ import android.provider.Settings
7
12
import android.view.Menu
13
+ import androidx.appcompat.app.AlertDialog
14
+ import androidx.core.app.ActivityCompat
8
15
import androidx.lifecycle.ViewModelProviders
9
16
import androidx.recyclerview.widget.GridLayoutManager
10
17
import com.lassi.R
@@ -44,6 +51,35 @@ class DocsFragment : LassiBaseViewModelFragment<DocsViewModel>() {
44
51
mediaPickerConfig.progressBarColor,
45
52
PorterDuff .Mode .MULTIPLY
46
53
)
54
+ checkPermission()
55
+ }
56
+
57
+ private fun checkPermission () {
58
+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .M ) {
59
+ if (ActivityCompat .checkSelfPermission(
60
+ requireContext()
61
+ , Manifest .permission.READ_EXTERNAL_STORAGE
62
+ ) != PackageManager .PERMISSION_GRANTED
63
+ && ActivityCompat .checkSelfPermission(
64
+ requireContext()
65
+ , Manifest .permission.WRITE_EXTERNAL_STORAGE
66
+ ) != PackageManager .PERMISSION_GRANTED
67
+ ) {
68
+ this .requestPermissions(
69
+ arrayOf(
70
+ Manifest .permission.READ_EXTERNAL_STORAGE ,
71
+ Manifest .permission.WRITE_EXTERNAL_STORAGE
72
+ )
73
+ , KeyUtils .REQUEST_PERMISSIONS_REQUEST_CODE
74
+ )
75
+ return
76
+ }
77
+ }
78
+ fetchDocs()
79
+ }
80
+
81
+ private fun fetchDocs () {
82
+ viewModel.fetchDocs()
47
83
}
48
84
49
85
override fun initLiveDataObservers () {
@@ -62,7 +98,6 @@ class DocsFragment : LassiBaseViewModelFragment<DocsViewModel>() {
62
98
}
63
99
}
64
100
65
-
66
101
private fun setImageAdapter () {
67
102
rvMedia.layoutManager = GridLayoutManager (context, mediaPickerConfig.gridSize)
68
103
rvMedia.adapter = mediaAdapter
@@ -97,4 +132,36 @@ class DocsFragment : LassiBaseViewModelFragment<DocsViewModel>() {
97
132
activity?.setResult(Activity .RESULT_OK , intent)
98
133
activity?.finish()
99
134
}
135
+
136
+ override fun onRequestPermissionsResult (
137
+ requestCode : Int , permissions : Array <out String >,
138
+ grantResults : IntArray
139
+ ) {
140
+ if (requestCode == KeyUtils .REQUEST_PERMISSIONS_REQUEST_CODE
141
+ && grantResults[0 ] == PackageManager .PERMISSION_GRANTED
142
+ ) {
143
+ fetchDocs()
144
+ } else {
145
+ showPermissionDisableAlert()
146
+ }
147
+ }
148
+
149
+ private fun showPermissionDisableAlert () {
150
+ val alertDialog = AlertDialog .Builder (requireContext())
151
+ alertDialog.setMessage(R .string.storage_permission_rational)
152
+ alertDialog.setCancelable(false )
153
+ alertDialog.setPositiveButton(R .string.ok) { _, _ ->
154
+ val intent = Intent ().apply {
155
+ action = Settings .ACTION_APPLICATION_DETAILS_SETTINGS
156
+ data = Uri .fromParts(" package" , activity?.packageName, null )
157
+ }
158
+ startActivityForResult(intent, KeyUtils .SETTINGS_REQUEST_CODE )
159
+ }
160
+ alertDialog.setNegativeButton(R .string.cancel) { _, _ ->
161
+ activity?.onBackPressed()
162
+ }
163
+ val permissionDialog = alertDialog.create()
164
+ permissionDialog.setCancelable(false )
165
+ permissionDialog.show()
166
+ }
100
167
}
0 commit comments