ハックな方法:
String sortOrder = "ROWID LIMIT 5"
結果としてORDER BY ROWID LIMIT 5
。ROWID
SQLiteが保持する暗黙の行IDで並べ替えます-並べ替え順序をまったく指定しない場合に発生するものに非常に近いです。これは、注文パラメーターが、指定された値が単に有効な注文タイプであるかどうかをチェックしないという事実を悪用しているわけではありません。一種のバッファオーバーフロー攻撃。
より良い方法は、Uri
パラメータを定義することです。
// query code
Uri queryUri = Uri.parse("content://what/ever/items");
queryUri = queryUri.buildUpon().appendQueryParameter("limit", "5").build();
// in ContentProvider
String limit = queryUri.getQueryParameter("limit");
ContentProvider
両方のアプローチは、が上記の制限の試みと互換性がある場合にのみ機能します。から特定のデータを制限または選択するための明確に定義された方法は実際にはありませんContentProvider
。それぞれContentProvider
に独自の契約が付属しているため、上記はすべてのプロバイダーで機能するとは限りません。