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)
|
||||
|
||||
this.context?.run {
|
||||
val imageCursor = this.contentResolver.query(
|
||||
|
||||
var imageCursor: Cursor? = null
|
||||
|
||||
/**
|
||||
* Change the way to fetch Media Store
|
||||
*/
|
||||
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 ->
|
||||
while (cursor.moveToNext()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user