Added alternative query syntax for listMedia for Android 11 (no longer supports LIMIT)
This commit is contained in:
parent
44842c0b1b
commit
50ccc25eb1
29
.idea/libraries/Dart_SDK.xml
generated
Normal file
29
.idea/libraries/Dart_SDK.xml
generated
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Dart SDK">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="file://$USER_HOME$/development/flutter/bin/cache/dart-sdk/lib/async" />
|
||||||
|
<root url="file://$USER_HOME$/development/flutter/bin/cache/dart-sdk/lib/cli" />
|
||||||
|
<root url="file://$USER_HOME$/development/flutter/bin/cache/dart-sdk/lib/collection" />
|
||||||
|
<root url="file://$USER_HOME$/development/flutter/bin/cache/dart-sdk/lib/convert" />
|
||||||
|
<root url="file://$USER_HOME$/development/flutter/bin/cache/dart-sdk/lib/core" />
|
||||||
|
<root url="file://$USER_HOME$/development/flutter/bin/cache/dart-sdk/lib/developer" />
|
||||||
|
<root url="file://$USER_HOME$/development/flutter/bin/cache/dart-sdk/lib/ffi" />
|
||||||
|
<root url="file://$USER_HOME$/development/flutter/bin/cache/dart-sdk/lib/html" />
|
||||||
|
<root url="file://$USER_HOME$/development/flutter/bin/cache/dart-sdk/lib/indexed_db" />
|
||||||
|
<root url="file://$USER_HOME$/development/flutter/bin/cache/dart-sdk/lib/io" />
|
||||||
|
<root url="file://$USER_HOME$/development/flutter/bin/cache/dart-sdk/lib/isolate" />
|
||||||
|
<root url="file://$USER_HOME$/development/flutter/bin/cache/dart-sdk/lib/js" />
|
||||||
|
<root url="file://$USER_HOME$/development/flutter/bin/cache/dart-sdk/lib/js_util" />
|
||||||
|
<root url="file://$USER_HOME$/development/flutter/bin/cache/dart-sdk/lib/math" />
|
||||||
|
<root url="file://$USER_HOME$/development/flutter/bin/cache/dart-sdk/lib/mirrors" />
|
||||||
|
<root url="file://$USER_HOME$/development/flutter/bin/cache/dart-sdk/lib/svg" />
|
||||||
|
<root url="file://$USER_HOME$/development/flutter/bin/cache/dart-sdk/lib/typed_data" />
|
||||||
|
<root url="file://$USER_HOME$/development/flutter/bin/cache/dart-sdk/lib/wasm" />
|
||||||
|
<root url="file://$USER_HOME$/development/flutter/bin/cache/dart-sdk/lib/web_audio" />
|
||||||
|
<root url="file://$USER_HOME$/development/flutter/bin/cache/dart-sdk/lib/web_gl" />
|
||||||
|
<root url="file://$USER_HOME$/development/flutter/bin/cache/dart-sdk/lib/web_sql" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES />
|
||||||
|
</library>
|
||||||
|
</component>
|
7
.idea/libraries/Flutter_Plugins.xml
generated
Normal file
7
.idea/libraries/Flutter_Plugins.xml
generated
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Flutter Plugins" type="FlutterPluginsLibraryType">
|
||||||
|
<CLASSES />
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES />
|
||||||
|
</library>
|
||||||
|
</component>
|
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/photo_gallery.iml" filepath="$PROJECT_DIR$/.idea/photo_gallery.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
17
.idea/photo_gallery.iml
generated
Normal file
17
.idea/photo_gallery.iml
generated
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
|
<exclude-output />
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/build" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
<orderEntry type="library" name="Dart SDK" level="project" />
|
||||||
|
</component>
|
||||||
|
</module>
|
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
60
.idea/workspace.xml
generated
Normal file
60
.idea/workspace.xml
generated
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ChangeListManager">
|
||||||
|
<list default="true" id="e1497618-4e4e-43ad-ab23-e4b4dce9d8cc" name="Default Changelist" comment="">
|
||||||
|
<change beforePath="$PROJECT_DIR$/android/src/main/kotlin/com/morbit/photogallery/PhotoGalleryPlugin.kt" beforeDir="false" afterPath="$PROJECT_DIR$/android/src/main/kotlin/com/morbit/photogallery/PhotoGalleryPlugin.kt" afterDir="false" />
|
||||||
|
</list>
|
||||||
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
|
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||||
|
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||||
|
</component>
|
||||||
|
<component name="DefaultGradleProjectSettings">
|
||||||
|
<option name="testRunner" value="GRADLE" />
|
||||||
|
<option name="delegatedBuild" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="Git.Settings">
|
||||||
|
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectId" id="1khaK8xQe9PX6hdw8hxgJ2iUSSb" />
|
||||||
|
<component name="ProjectViewState">
|
||||||
|
<option name="hideEmptyMiddlePackages" value="true" />
|
||||||
|
<option name="showLibraryContents" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PropertiesComponent">
|
||||||
|
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
|
||||||
|
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
||||||
|
<property name="android.project.structure.last.selected" value="SDK Location" />
|
||||||
|
<property name="android.project.structure.proportion" value="0.15" />
|
||||||
|
<property name="android.sdk.path" value="$USER_HOME$/Library/Android/sdk" />
|
||||||
|
<property name="dart.analysis.tool.window.visible" value="false" />
|
||||||
|
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
||||||
|
<property name="settings.editor.selected.configurable" value="preferences.pluginManager" />
|
||||||
|
<property name="show.migrate.to.gradle.popup" value="false" />
|
||||||
|
</component>
|
||||||
|
<component name="RunManager">
|
||||||
|
<configuration name="main.dart" type="FlutterRunConfigurationType" factoryName="Flutter">
|
||||||
|
<option name="filePath" value="$PROJECT_DIR$/example/lib/main.dart" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
|
<component name="SvnConfiguration">
|
||||||
|
<configuration />
|
||||||
|
</component>
|
||||||
|
<component name="TaskManager">
|
||||||
|
<task active="true" id="Default" summary="Default task">
|
||||||
|
<changelist id="e1497618-4e4e-43ad-ab23-e4b4dce9d8cc" name="Default Changelist" comment="" />
|
||||||
|
<created>1606155210205</created>
|
||||||
|
<option name="number" value="Default" />
|
||||||
|
<option name="presentableId" value="Default" />
|
||||||
|
<updated>1606155210205</updated>
|
||||||
|
</task>
|
||||||
|
<servers />
|
||||||
|
</component>
|
||||||
|
<component name="WindowStateProjectService">
|
||||||
|
<state x="533" y="288" key="SettingsEditor" timestamp="1606155429126">
|
||||||
|
<screen x="0" y="25" width="2048" height="1255" />
|
||||||
|
</state>
|
||||||
|
<state x="533" y="288" key="SettingsEditor/0.25.2048.1255@0.25.2048.1255" timestamp="1606155429126" />
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -277,13 +277,58 @@ class PhotoGalleryPlugin : FlutterPlugin, MethodCallHandler {
|
|||||||
val limit = take ?: (total - offset)
|
val limit = take ?: (total - offset)
|
||||||
|
|
||||||
this.context?.run {
|
this.context?.run {
|
||||||
val imageCursor = this.contentResolver.query(
|
|
||||||
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
|
var imageCursor: Cursor? = null
|
||||||
imageMetadataProjection,
|
|
||||||
if (albumId == allAlbumId) null else "${MediaStore.Images.Media.BUCKET_ID} = $albumId",
|
/**
|
||||||
null,
|
* Change the way to fetch Media Store
|
||||||
"$imageOrderBy LIMIT $limit OFFSET $offset"
|
*/
|
||||||
)
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||||
|
// Get All data in Cursor by sorting in DESC order
|
||||||
|
imageCursor = this.contentResolver.query(
|
||||||
|
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
|
||||||
|
imageMetadataProjection,
|
||||||
|
android.os.Bundle().apply {
|
||||||
|
// Limit & Offset
|
||||||
|
putInt(android.content.ContentResolver.QUERY_ARG_LIMIT, limit)
|
||||||
|
putInt(android.content.ContentResolver.QUERY_ARG_OFFSET, offset)
|
||||||
|
// Sort function
|
||||||
|
putStringArray(
|
||||||
|
android.content.ContentResolver.QUERY_ARG_SORT_COLUMNS,
|
||||||
|
arrayOf(
|
||||||
|
MediaStore.Images.Media.DATE_TAKEN,
|
||||||
|
MediaStore.Images.Media.DATE_MODIFIED
|
||||||
|
)
|
||||||
|
)
|
||||||
|
putIntArray(
|
||||||
|
android.content.ContentResolver.QUERY_ARG_SORT_DIRECTION,
|
||||||
|
intArrayOf(
|
||||||
|
android.content.ContentResolver.QUERY_SORT_DIRECTION_DESCENDING,
|
||||||
|
android.content.ContentResolver.QUERY_SORT_DIRECTION_DESCENDING
|
||||||
|
)
|
||||||
|
)
|
||||||
|
// Selection
|
||||||
|
if (albumId != allAlbumId) {
|
||||||
|
putString(android.content.ContentResolver.QUERY_ARG_SQL_SELECTION, "${MediaStore.Images.Media.BUCKET_ID} = ?")
|
||||||
|
putStringArray(
|
||||||
|
android.content.ContentResolver.QUERY_ARG_SQL_SELECTION_ARGS,
|
||||||
|
arrayOf(
|
||||||
|
albumId.toString()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
null
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
imageCursor = this.contentResolver.query(
|
||||||
|
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
|
||||||
|
imageMetadataProjection,
|
||||||
|
if (albumId == allAlbumId) null else "${MediaStore.Images.Media.BUCKET_ID} = $albumId",
|
||||||
|
null,
|
||||||
|
"$imageOrderBy LIMIT $limit OFFSET $offset"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
imageCursor?.use { cursor ->
|
imageCursor?.use { cursor ->
|
||||||
while (cursor.moveToNext()) {
|
while (cursor.moveToNext()) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user