@@ -8,6 +8,7 @@ import android.content.res.Configuration
8
8
import android.database.Cursor
9
9
import android.graphics.Bitmap
10
10
import android.net.Uri
11
+ import android.os.Build
11
12
import android.os.Bundle
12
13
import android.os.Environment
13
14
import android.provider.MediaStore
@@ -17,6 +18,7 @@ import android.view.ViewGroup
17
18
import android.widget.Toast
18
19
import androidx.activity.result.contract.ActivityResultContracts
19
20
import androidx.core.content.ContextCompat
21
+ import androidx.core.content.FileProvider
20
22
import androidx.databinding.DataBindingUtil
21
23
import androidx.recyclerview.widget.GridLayoutManager
22
24
import androidx.recyclerview.widget.LinearLayoutManager
@@ -48,7 +50,7 @@ class FilePickerFragment : BottomSheetDialogFragment() {
48
50
49
51
private lateinit var config: FilePicker
50
52
private var storageIsOpen = false
51
-
53
+ private var cameraImagePath = " "
52
54
companion object {
53
55
fun newInstance () = FilePickerFragment ()
54
56
}
@@ -118,11 +120,25 @@ class FilePickerFragment : BottomSheetDialogFragment() {
118
120
119
121
}
120
122
123
+ private fun getUriFromFile (file : File ? ): Uri ? {
124
+ if (file == null ) return null
125
+ return if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .N )
126
+ FileProvider .getUriForFile(requireContext(), " ${requireContext().packageName} .provider" , file)
127
+ else
128
+ Uri .fromFile(file)
129
+ }
130
+
131
+
121
132
fun openCamera () {
122
133
if (! isGrant(Manifest .permission.CAMERA ) || ! isGrant(Manifest .permission.WRITE_EXTERNAL_STORAGE ))
123
134
checkPermission()
124
135
else {
136
+ cameraImagePath = Environment .getExternalStoragePublicDirectory(Environment .DIRECTORY_DOWNLOADS ).path + File .separator + System .currentTimeMillis() + " .png"
137
+ val file = File (cameraImagePath)
138
+ file.createNewFile()
139
+ val outputFileUri = getUriFromFile(file)
125
140
val cameraIntent = Intent (MediaStore .ACTION_IMAGE_CAPTURE )
141
+ cameraIntent.putExtra(MediaStore .EXTRA_OUTPUT , outputFileUri)
126
142
cameraLauncher.launch(cameraIntent)
127
143
}
128
144
}
@@ -186,11 +202,11 @@ class FilePickerFragment : BottomSheetDialogFragment() {
186
202
if (result.resultCode == Activity .RESULT_OK ) {
187
203
initRecyclerView()
188
204
result.data?.extras?.get(" data" )?.let {
189
- val imageBitmap = it as Bitmap ?
190
- val file = saveBitmapToStorage(imageBitmap)
205
+ // val imageBitmap = it as Bitmap?
206
+ // val file = saveBitmapToStorage(imageBitmap)
191
207
getImage()
192
- if (file != null && file .exists()) {
193
- val fileModel = FileModel (file.path )
208
+ if (File (cameraImagePath) .exists()) {
209
+ val fileModel = FileModel (cameraImagePath )
194
210
if (checkMaxSize(fileModel) && selectedFiles.size < config.maxSelection) {
195
211
fileModel.selected = true
196
212
selectedFiles.add(fileModel)
@@ -209,7 +225,7 @@ class FilePickerFragment : BottomSheetDialogFragment() {
209
225
val file = File (imagesDir)
210
226
return try {
211
227
val fos = FileOutputStream (file)
212
- bitmap.compress(Bitmap .CompressFormat .PNG , 90 , fos)
228
+ bitmap.compress(Bitmap .CompressFormat .PNG , 100 , fos)
213
229
fos.close()
214
230
if (file.exists()) file
215
231
else null
0 commit comments