Skip to content

Commit 2354205

Browse files
author
majid
committed
Merge remote-tracking branch 'origin/dev'
2 parents deb4f92 + 3500bd3 commit 2354205

File tree

5 files changed

+35
-10
lines changed

5 files changed

+35
-10
lines changed

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ plugins {
44
}
55

66
android {
7-
compileSdk 31
7+
compileSdk 33
88

99
defaultConfig {
1010
applicationId "ir.one_developer.filepickerlibrary"
1111
minSdk 21
12-
targetSdk 31
12+
targetSdk 33
1313
versionCode 1
1414
versionName "1.0"
1515

file-picker/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ plugins {
66
}
77

88
android {
9-
compileSdk 31
9+
compileSdk 33
1010

1111
defaultConfig {
1212
minSdk 21
13-
targetSdk 31
13+
targetSdk 33
1414
vectorDrawables.useSupportLibrary = true
1515
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1616
consumerProguardFiles "consumer-rules.pro"
@@ -70,7 +70,7 @@ afterEvaluate {
7070
from components.release
7171
groupId = 'com.github.majidarabi'
7272
artifactId = 'file-picker'
73-
version = '0.2.1'
73+
version = '0.2.2'
7474
}
7575
}
7676
}

file-picker/src/main/AndroidManifest.xml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,14 @@
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
33
package="ir.one_developer.file_picker">
44

5-
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
6-
<application android:requestLegacyExternalStorage="true"/>
5+
<uses-permission
6+
android:name="android.permission.READ_EXTERNAL_STORAGE"
7+
android:maxSdkVersion="32" />
8+
9+
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
10+
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
11+
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
12+
13+
<application android:requestLegacyExternalStorage="true" />
714

815
</manifest>

file-picker/src/main/java/com/github/file_picker/FilePicker.kt

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.Manifest
44
import android.content.DialogInterface
55
import android.content.res.ColorStateList
66
import android.graphics.Color
7+
import android.os.Build
78
import android.os.Bundle
89
import android.view.LayoutInflater
910
import android.view.View
@@ -263,7 +264,8 @@ class FilePicker private constructor(
263264
}
264265

265266
override fun onCreateView(
266-
inflater: LayoutInflater, container: ViewGroup?,
267+
inflater: LayoutInflater,
268+
container: ViewGroup?,
267269
savedInstanceState: Bundle?
268270
): View {
269271
_binding = FilePickerBinding.inflate(inflater, container, false)
@@ -278,14 +280,30 @@ class FilePicker private constructor(
278280

279281
override fun onStart() {
280282
super.onStart()
281-
val readStoragePermission = Manifest.permission.READ_EXTERNAL_STORAGE
283+
val readStoragePermission = getRequiredPermissionByType()
282284
if (!hasPermission(readStoragePermission)) {
283285
requestPermission(readStoragePermission)
284286
return
285287
}
286288
loadFiles()
287289
}
288290

291+
/**
292+
* Get required permission by file type
293+
*
294+
* @return the permission
295+
*/
296+
private fun getRequiredPermissionByType() : String {
297+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
298+
return when(fileType) {
299+
FileType.AUDIO -> Manifest.permission.READ_MEDIA_AUDIO
300+
FileType.VIDEO -> Manifest.permission.READ_MEDIA_VIDEO
301+
FileType.IMAGE -> Manifest.permission.READ_MEDIA_IMAGES
302+
}
303+
}
304+
return Manifest.permission.READ_EXTERNAL_STORAGE
305+
}
306+
289307
override fun show(manager: FragmentManager, tag: String?) {
290308
if (isShown) return
291309
super.show(manager, tag)

file-picker/src/main/java/com/github/file_picker/data/repository/FilesPagingSource.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ internal class FilesPagingSource(
1313
) : PagingSource<Int, Media>() {
1414

1515
// the initial load size for the first page may be different from the requested size
16-
var initialLoadSize: Int = 0
16+
private var initialLoadSize: Int = 0
1717

1818
override fun getRefreshKey(state: PagingState<Int, Media>): Int? =
1919
state.anchorPosition?.let { anchorPosition ->

0 commit comments

Comments
 (0)