Skip to content

Commit 607735f

Browse files
author
naresh chocha
committed
refactor: use BundleCompat.getParcelable for safer Parcelable retrieval
Replaces manual Android version checks and deprecated `getParcelableExtra` calls with `BundleCompat.getParcelable`. This simplifies the code and ensures type safety when retrieving Parcelable objects from Intent extras across different Android versions. - Updated in `PopUpActivity`, `MediaFilePickerActivity`, `DocumentFilePickerActivity`, `ImageCaptureActivity`, and `VideoCaptureActivity`. - Removed an unused `setActivityResult` function from `FilePickerResultHandler.kt`.
1 parent 8526eaf commit 607735f

6 files changed

Lines changed: 30 additions & 71 deletions

File tree

filepickerlibrary/src/main/java/com/nareshchocha/filepickerlibrary/ui/activitys/DocumentFilePickerActivity.kt

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package com.nareshchocha.filepickerlibrary.ui.activitys
22

33
import android.content.Context
44
import android.content.Intent
5-
import android.os.Build
65
import android.os.Bundle
76
import androidx.activity.ComponentActivity
87
import androidx.activity.compose.setContent
@@ -15,6 +14,7 @@ import androidx.compose.runtime.remember
1514
import androidx.compose.runtime.setValue
1615
import androidx.compose.ui.platform.LocalContext
1716
import androidx.compose.ui.res.stringResource
17+
import androidx.core.os.BundleCompat
1818
import com.nareshchocha.filepickerlibrary.R
1919
import com.nareshchocha.filepickerlibrary.models.DocumentFilePickerConfig
2020
import com.nareshchocha.filepickerlibrary.ui.components.dialogs.AppRationaleDialog
@@ -33,15 +33,11 @@ import com.nareshchocha.filepickerlibrary.utilities.setSuccessResult
3333

3434
internal class DocumentFilePickerActivity : ComponentActivity() {
3535
private val mDocumentFilePickerConfig: DocumentFilePickerConfig? by lazy {
36-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
37-
intent.getParcelableExtra(
38-
Const.BundleInternalExtras.PICK_DOCUMENT,
39-
DocumentFilePickerConfig::class.java
40-
)
41-
} else {
42-
@Suppress("DEPRECATION")
43-
intent.getParcelableExtra(Const.BundleInternalExtras.PICK_DOCUMENT) as DocumentFilePickerConfig?
44-
}
36+
BundleCompat.getParcelable(
37+
intent.extras ?: Bundle.EMPTY,
38+
Const.BundleInternalExtras.PICK_DOCUMENT,
39+
DocumentFilePickerConfig::class.java
40+
)
4541
}
4642

4743
val documentFilePickerLauncher =

filepickerlibrary/src/main/java/com/nareshchocha/filepickerlibrary/ui/activitys/ImageCaptureActivity.kt

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package com.nareshchocha.filepickerlibrary.ui.activitys
33
import android.content.Context
44
import android.content.Intent
55
import android.net.Uri
6-
import android.os.Build
76
import android.os.Bundle
87
import androidx.activity.ComponentActivity
98
import androidx.activity.compose.setContent
@@ -16,6 +15,7 @@ import androidx.compose.runtime.remember
1615
import androidx.compose.runtime.setValue
1716
import androidx.compose.ui.platform.LocalContext
1817
import androidx.compose.ui.res.stringResource
18+
import androidx.core.os.BundleCompat
1919
import com.nareshchocha.filepickerlibrary.R
2020
import com.nareshchocha.filepickerlibrary.models.ImageCaptureConfig
2121
import com.nareshchocha.filepickerlibrary.ui.components.dialogs.AppRationaleDialog
@@ -35,15 +35,11 @@ import java.io.File
3535

3636
internal class ImageCaptureActivity : ComponentActivity() {
3737
private val mImageCaptureConfig: ImageCaptureConfig? by lazy {
38-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
39-
intent.getParcelableExtra(
40-
Const.BundleInternalExtras.IMAGE_CAPTURE,
41-
ImageCaptureConfig::class.java
42-
)
43-
} else {
44-
@Suppress("DEPRECATION")
45-
intent.getParcelableExtra(Const.BundleInternalExtras.IMAGE_CAPTURE) as ImageCaptureConfig?
46-
}
38+
BundleCompat.getParcelable(
39+
intent.extras ?: Bundle.EMPTY,
40+
Const.BundleInternalExtras.IMAGE_CAPTURE,
41+
ImageCaptureConfig::class.java
42+
)
4743
}
4844
private var imageFile: File? = null
4945
private val imageFileUri: Uri? by lazy {

filepickerlibrary/src/main/java/com/nareshchocha/filepickerlibrary/ui/activitys/MediaFilePickerActivity.kt

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package com.nareshchocha.filepickerlibrary.ui.activitys
33
import android.app.Activity
44
import android.content.Context
55
import android.content.Intent
6-
import android.os.Build
76
import android.os.Bundle
87
import androidx.activity.ComponentActivity
98
import androidx.activity.compose.setContent
@@ -16,6 +15,7 @@ import androidx.compose.runtime.remember
1615
import androidx.compose.runtime.setValue
1716
import androidx.compose.ui.platform.LocalContext
1817
import androidx.compose.ui.res.stringResource
18+
import androidx.core.os.BundleCompat
1919
import com.nareshchocha.filepickerlibrary.R
2020
import com.nareshchocha.filepickerlibrary.models.PickMediaConfig
2121
import com.nareshchocha.filepickerlibrary.ui.components.dialogs.AppRationaleDialog
@@ -34,15 +34,11 @@ import com.nareshchocha.filepickerlibrary.utilities.setSuccessResult
3434

3535
internal class MediaFilePickerActivity : ComponentActivity() {
3636
private val mPickMediaConfig: PickMediaConfig? by lazy {
37-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
38-
intent.getParcelableExtra(
39-
Const.BundleInternalExtras.PICK_MEDIA,
40-
PickMediaConfig::class.java
41-
)
42-
} else {
43-
@Suppress("DEPRECATION")
44-
intent.getParcelableExtra(Const.BundleInternalExtras.PICK_MEDIA) as PickMediaConfig?
45-
}
37+
BundleCompat.getParcelable(
38+
intent.extras ?: Bundle.EMPTY,
39+
Const.BundleInternalExtras.PICK_MEDIA,
40+
PickMediaConfig::class.java
41+
)
4642
}
4743

4844
val mediaFilePickerLauncher =

filepickerlibrary/src/main/java/com/nareshchocha/filepickerlibrary/ui/activitys/PopUpActivity.kt

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package com.nareshchocha.filepickerlibrary.ui.activitys
22

33
import android.content.Context
44
import android.content.Intent
5-
import android.os.Build
65
import android.os.Bundle
76
import androidx.activity.ComponentActivity
87
import androidx.activity.compose.setContent
@@ -24,6 +23,7 @@ import androidx.compose.runtime.Composable
2423
import androidx.compose.ui.Modifier
2524
import androidx.compose.ui.res.stringResource
2625
import androidx.compose.ui.unit.dp
26+
import androidx.core.os.BundleCompat
2727
import com.nareshchocha.filepickerlibrary.FilePickerResultContracts
2828
import com.nareshchocha.filepickerlibrary.R
2929
import com.nareshchocha.filepickerlibrary.models.BaseConfig
@@ -39,15 +39,11 @@ import com.nareshchocha.filepickerlibrary.utilities.toArrayList
3939

4040
internal class PopUpActivity : ComponentActivity() {
4141
private val mPickerData: PickerData? by lazy {
42-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
43-
intent.getParcelableExtra(
44-
Const.BundleInternalExtras.PICKER_DATA,
45-
PickerData::class.java
46-
)
47-
} else {
48-
@Suppress("DEPRECATION")
49-
intent.getParcelableExtra(Const.BundleInternalExtras.PICKER_DATA) as PickerData?
50-
}
42+
BundleCompat.getParcelable(
43+
intent.extras ?: Bundle.EMPTY,
44+
Const.BundleInternalExtras.PICKER_DATA,
45+
PickerData::class.java
46+
)
5147
}
5248

5349
private val intentResultLauncher =

filepickerlibrary/src/main/java/com/nareshchocha/filepickerlibrary/ui/activitys/VideoCaptureActivity.kt

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package com.nareshchocha.filepickerlibrary.ui.activitys
33
import android.content.Context
44
import android.content.Intent
55
import android.net.Uri
6-
import android.os.Build
76
import android.os.Bundle
87
import androidx.activity.ComponentActivity
98
import androidx.activity.compose.setContent
@@ -16,6 +15,7 @@ import androidx.compose.runtime.remember
1615
import androidx.compose.runtime.setValue
1716
import androidx.compose.ui.platform.LocalContext
1817
import androidx.compose.ui.res.stringResource
18+
import androidx.core.os.BundleCompat
1919
import com.nareshchocha.filepickerlibrary.R
2020
import com.nareshchocha.filepickerlibrary.models.VideoCaptureConfig
2121
import com.nareshchocha.filepickerlibrary.ui.components.dialogs.AppRationaleDialog
@@ -35,15 +35,11 @@ import java.io.File
3535

3636
internal class VideoCaptureActivity : ComponentActivity() {
3737
private val mVideoCaptureConfig: VideoCaptureConfig? by lazy {
38-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
39-
intent.getParcelableExtra(
40-
Const.BundleInternalExtras.VIDEO_CAPTURE,
41-
VideoCaptureConfig::class.java
42-
)
43-
} else {
44-
@Suppress("DEPRECATION")
45-
intent.getParcelableExtra(Const.BundleInternalExtras.VIDEO_CAPTURE) as VideoCaptureConfig?
46-
}
38+
BundleCompat.getParcelable(
39+
intent.extras ?: Bundle.EMPTY,
40+
Const.BundleInternalExtras.VIDEO_CAPTURE,
41+
VideoCaptureConfig::class.java
42+
)
4743
}
4844
private var videoFile: File? = null
4945
private val videoFileUri: Uri? by lazy {

filepickerlibrary/src/main/java/com/nareshchocha/filepickerlibrary/utilities/FilePickerResultHandler.kt

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -82,27 +82,6 @@ internal fun Activity.setSuccessResult(
8282
finish()
8383
}
8484

85-
internal fun Activity.setActivityResult(
86-
resultCode: Int? = null,
87-
resultIntent: Intent? = null,
88-
isFromCapture: Boolean = false
89-
) {
90-
log("ResultIntent : $resultIntent", LogPriority.INFO_LOG, Const.LogTag.FILE_PICKER_RESULT)
91-
setResult(
92-
if (resultIntent == null || resultCode == null) Activity.RESULT_CANCELED else resultCode,
93-
resultIntent?.apply {
94-
flags =
95-
if (isFromCapture) {
96-
Intent.FLAG_GRANT_WRITE_URI_PERMISSION or Intent.FLAG_GRANT_READ_URI_PERMISSION
97-
} else {
98-
Intent.FLAG_GRANT_READ_URI_PERMISSION
99-
}
100-
if (isFromCapture) putExtra(Const.BundleExtras.FROM_CAPTURE, true)
101-
}
102-
)
103-
finish()
104-
}
105-
10685
internal fun Activity.setCanceledResult(error: String? = null) {
10786
log("Error: $error", LogPriority.ERROR_LOG, Const.LogTag.FILE_PICKER_RESULT)
10887
setResult(

0 commit comments

Comments
 (0)