ContentResolver queryパラメータの詳細


前言
クエリーシステムの連絡先の1つの問題に出会って、query()の方法に対する理解が不十分で、今まとめて整理します!
説明する
ContentResolver contentResolver = this.getContentResolver(); 

ContentResolverはコンテンツ解析器に直訳され、Androidでのプログラム間データの共有はProvider/Resolverによって行われる.データ(コンテンツ)を提供するのはProviderと呼ばれ,Resovler提供インタフェースはこのコンテンツを解読する.
ここで、システムは連絡先のProviderを提供しているので、連絡先の内容を読み取るためにResolverを構築する必要があります.
Cursor cursor = contentResolver.query(android.provider.ContactsContract.Contacts.CONTENT_URI,  
                null, null, null, null); 

Android公式ドキュメント:public final Cursor query (Uri uri, String[] projection,String selection,String[] selectionArgs, String sortOrder)の最初のパラメータ、uri、Androidが提供するコンテンツのProviderと言いますが、Androidではどのように各Providerを区別しますか?連絡先を提供したり、写真を提供したりします.そのため、このProviderを識別する唯一の標識が必要です.Uriはこの標識で、android.provider.ContactsContract.Contacts.CONTENT_URIは連絡先を提供するコンテンツプロバイダです.残念ながら、このコンテンツプロバイダが提供するデータは少ないです.
2番目のパラメータ、projection、なぜこの単語を使うのか分かりません.このパラメータは、Contacts Providerが連絡先のIDや連絡先のNAMEを提供しているなど、Providerが返すコンテンツ(列Column)を教えてくれます.NAMEだけが必要な場合は、次のように使用します.
Cursor cursor = contentResolver.query(android.provider.ContactsContract.Contacts.CONTENT_URI,  
    new String[]{android.provider.ContactsContract.Contacts.DISPLAY_NAME}, null, null, null);

もちろん、次の印刷のあなたはNAMEを表示するしかありません.あなたが返した結果にはIDが含まれていないからです.Providerを返すすべての内容(列Column)をnullで表します.
3番目のパラメータ、selection、SQL文のwhereに相当する条件を設定します.nullはフィルタを行わないことを示します.張三という名前のデータだけを返す場合は、3番目のパラメータを次のように設定します.
Cursor cursor = contentResolver.query(android.provider.ContactsContract.Contacts.CONTENT_URI,  
    new String[]{android.provider.ContactsContract.Contacts.DISPLAY_NAME},  
    android.provider.ContactsContract.Contacts.DISPLAY_NAME + "='  '", null, null); 

4番目のパラメータ、selectionArgs、このパラメータは3番目のパラメータに合わせて使用されます.3番目のパラメータにあれば?selectionArgsで書いたデータはに置き換えられます
    Cursor cursor = contentResolver.query(android.provider.ContactsContract.Contacts.CONTENT_URI,  
        new String[]{android.provider.ContactsContract.Contacts.DISPLAY_NAME},  
        android.provider.ContactsContract.Contacts.DISPLAY_NAME + "=?",  
                    new String[]{"  "}, null);  

効果は上の文の効果と同じです.
5番目のパラメータは、SQL文のOrder byに相当するsortOrderです.IDの降順に結果を並べたい場合は、次のようになります.
Cursor cursor = contentResolver.query(android.provider.ContactsContract.Contacts.CONTENT_URI,  
                null, null,null, android.provider.ContactsContract.Contacts._ID + " DESC");
+"DESC"の降順、実はデフォルトの順序は昇順で、+"ASC"の書くか書かないかの効果はすべて同じです.
参考記事:Android学習ノートContacts(一)ContentResolver queryパラメータ詳細