Describe the bug
升级到 Android 10,后调用Matisse崩溃
Invalid column COUNT(*) AS count
To Reproduce
Caused by: java.lang.IllegalArgumentException: Invalid column COUNT(*) AS count
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:170)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140)
at android.content.ContentProviderProxy.query(ContentProviderNative.java:423)
at android.content.ContentResolver.query(ContentResolver.java:944)
at android.content.ContentResolver.query(ContentResolver.java:880)
at androidx.core.content.ContentResolverCompat.query(ContentResolverCompat.java:81)
at androidx.loader.content.CursorLoader.loadInBackground(CursorLoader.java:63)
at com.zhihu.matisse.internal.loader.AlbumLoader.loadInBackground(AlbumLoader.java:114)
at com.zhihu.matisse.internal.loader.AlbumLoader.loadInBackground(AlbumLoader.java:33)
at androidx.loader.content.AsyncTaskLoader.onLoadInBackground(AsyncTaskLoader.java:307)
at androidx.loader.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:60)
at androidx.loader.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:48)
at androidx.loader.content.ModernAsyncTask$2.call(ModernAsyncTask.java:141)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
Expected behavior
Screenshots

Smartphone (please complete the following information):
还没有适配 Android 10 ,近期会支持一下。
我也遇到了
Just an additional note to all, if you intent to reproduce this problem in Android Q, which introduces scoped storage recently, you need to change Matisse library and Matisse sample's build.gradle, to both
compileSdkVersion 29 and targetSdkVersion 29
AlbumLoader.java
My initial testing is that, Android Q is having problem in
"COUNT(*) AS " + COLUMN_COUNT in PROJECTIONGROUP BY in SELECTIONAn op seem to have solution on these limitations - https://github.com/zhihu/Matisse/issues/646 However, the code formatting make it difficult to copy and paste directly for testing purpose. I may need to spend some time, to digest the idea behind the code as I'm not familiar with CursorLoader.
同志好!
我尝试修复 Android Q 的臭虫。因为我对 CursorLoader 并不了解。如果你能找出更好的方案,请修正。
谢谢同志们!
这是我建议的代码
https://github.com/zhihu/Matisse/pull/665/commits/2c8f6f8647a1e7503dffa62bce2a59eaccd6e872
MediaStore.MediaColumns.DATA 已经 deprecated 了。可,我不知道应该用什么代替品。请同志留意 - https://stackoverflow.com/questions/57893449/what-is-the-replacement-for-deprecated-mediastore-mediacolumns-data-in-android-q
因为 MediaStore.MediaColumns.DATA 已经 deprecated ,我建议把 Album 的 mCoverPath 转换成 mCoverUri
我比较不确定的是,会不会在一些刁钻的状况,Uri.toString / Uri.parse 的相互转换会失败?
I got the same crash on version 0.5.3-beta2, any idea when a fix will be added to the library?
近期工作中的事情比较多,会抽空进行适配。
可以暂时按照 issues 646 来改
希望尽快适配Android 10
希望尽快适配Android 10
https://github.com/zhihu/Matisse/releases/tag/v0.5.3-beta3 已经适配了呀。
希望尽快适配Android 10
https://github.com/zhihu/Matisse/releases/tag/v0.5.3-beta3 已经适配了呀。
抱歉,已发现是我这边没适配好Android 10的外部存储限制
api 'com.zhihu.android:matisse:0.5.3-beta3'
为啥编译不过
ERROR: Unable to resolve dependency for ':PhotoSdk@debug/compileClasspath': Could not download matisse.aar (com.zhihu.android:matisse:0.5.3-beta3)
Show Details
Affected Modules: PhotoSdk
ERROR: Unable to resolve dependency for ':PhotoSdk@debugAndroidTest/compileClasspath': Could not download matisse.aar (com.zhihu.android:matisse:0.5.3-beta3)
Show Details
Affected Modules: PhotoSdk
ERROR: Unable to resolve dependency for ':PhotoSdk@debugUnitTest/compileClasspath': Could not download matisse.aar (com.zhihu.android:matisse:0.5.3-beta3)
Show Details
Affected Modules: PhotoSdk
ERROR: Unable to resolve dependency for ':PhotoSdk@release/compileClasspath': Could not download matisse.aar (com.zhihu.android:matisse:0.5.3-beta3)
Show Details
Affected Modules: PhotoSdk
ERROR: Unable to resolve dependency for ':PhotoSdk@releaseUnitTest/compileClasspath': Could not download matisse.aar (com.zhihu.android:matisse:0.5.3-beta3)
Show Details
Affected Modules: PhotoSdk
ERROR: Unable to resolve dependency for ':App@debug/compileClasspath': Could not download matisse.aar (com.zhihu.android:matisse:0.5.3-beta3)
Show Details
Affected Modules: App
ERROR: Unable to resolve dependency for ':App@debugAndroidTest/compileClasspath': Could not download matisse.aar (com.zhihu.android:matisse:0.5.3-beta3)
Show Details
Affected Modules: App
ERROR: Unable to resolve dependency for ':App@debugUnitTest/compileClasspath': Could not download matisse.aar (com.zhihu.android:matisse:0.5.3-beta3)
Show Details
Affected Modules: App
ERROR: Unable to resolve dependency for ':App@release/compileClasspath': Could not download matisse.aar (com.zhihu.android:matisse:0.5.3-beta3)
Show Details
Affected Modules: App
ERROR: Unable to resolve dependency for ':App@releaseUnitTest/compileClasspath': Could not download matisse.aar (com.zhihu.android:matisse:0.5.3-beta3)
Show Details
Affected Modules: App
@JakePrim kilo-swodh
Same problem with Android 10 (pixel 4)
2020-03-26 20:32:13.820 1815-2067/[my project name] E/AndroidRuntime: FATAL EXCEPTION: ModernAsyncTask #1
Process: [my project name] , PID: 1815
java.lang.RuntimeException: An error occurred while executing doInBackground()
at androidx.loader.content.ModernAsyncTask$3.done(ModernAsyncTask.java:164)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
at java.util.concurrent.FutureTask.run(FutureTask.java:271)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
Caused by: java.lang.IllegalArgumentException: Invalid column COUNT(*) AS count
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:170)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140)
at android.content.ContentProviderProxy.query(ContentProviderNative.java:423)
at android.content.ContentResolver.query(ContentResolver.java:944)
at android.content.ContentResolver.query(ContentResolver.java:880)
at androidx.core.content.ContentResolverCompat.query(ContentResolverCompat.java:81)
at androidx.loader.content.CursorLoader.loadInBackground(CursorLoader.java:63)
at com.zhihu.matisse.internal.loader.AlbumLoader.loadInBackground(AlbumLoader.java:97)
at com.zhihu.matisse.internal.loader.AlbumLoader.loadInBackground(AlbumLoader.java:33)
at androidx.loader.content.AsyncTaskLoader.onLoadInBackground(AsyncTaskLoader.java:307)
at androidx.loader.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:60)
at androidx.loader.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:48)
at androidx.loader.content.ModernAsyncTask$2.call(ModernAsyncTask.java:141)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
Most helpful comment
还没有适配 Android 10 ,近期会支持一下。