target sdk30でpixelのAndroid11端末にて、ContentResolverでLimit句のあるクエリを発行すると下記のエラーが発生するようになった
1
|
java.lang.IllegalArgumentException: Invalid token limit
|
手元ではpixel5でしか試していないが、twitterで同様の現象について発言している方もいたのでおそらくpixelで起こる現象なのでしょう
この場合こちらのBundleを渡すqueryを使うことで解決可能です
https://developer.android.com/reference/android/content/ContentResolver#query(android.net.Uri,%20java.lang.String[],%20android.os.Bundle,%20android.os.CancellationSignal)
ただし、このAPIはapi level26からなのでバージョンで分けて使用する必要があります
こんな感じ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
contentResolver.query(
uri,
projection,
bundleOf(
ContentResolver.QUERY_ARG_SQL_SORT_ORDER to order,
ContentResolver.QUERY_ARG_SQL_SELECTION to selection,
ContentResolver.QUERY_ARG_SQL_SELECTION_ARGS to selectionArg,
ContentResolver.QUERY_ARG_OFFSET to offset,
ContentResolver.QUERY_ARG_LIMIT to limit,
),
null
)
} else {
contentResolver.query(
uri,
projection,
selection,
selectionArg,
"$order limit $limit offset $offset"
)
|
これからはこっちのqueryを使えっていうことなんでしょうか 🤔