2012-04-11 22 views
1

申し訳ありませんが、これは重複した質問かもしれませんが、私はこの辺りで私の頭を包み込むために夕方を過ごしましたが、これについても少し光を当てるかもしれない他の投稿を見つけることができないようです。もう少し目のペアが何かを見つけるかもしれない。ContactsContract.Data暗黙的な結合列は機能しませんか?

ContactsContract.DataのAPIドキュメントから、特定のフィールドを指定すると、ライブラリはいくつかの魔法を行い、バックグラウンドで暗黙の参加を実行するという印象を受けています。

私のために働いていないようです。これが実行されると

import android.provider.ContactsContract.CommonDataKinds.Phone; 

private Cursor getContacts() 
{ 
    // Run query 
    Uri uri = Phone.CONTENT_URI; 
    String[] projection = new String[] { 
      Phone.DISPLAY_NAME, 
      Phone.NUMBER, 
      Phone.CONTENT_ITEM_TYPE, 
      Phone.HAS_PHONE_NUMBER, 
      Phone.IN_VISIBLE_GROUP 
    }; 
    String selection = Phone.HAS_PHONE_NUMBER + " = '1' AND " + Phone.IN_VISIBLE_GROUP + " = '1'"; 
    String[] selectionArgs = null; 
    String sortOrder = Phone.DISPLAY_NAME + " COLLATE LOCALIZED ASC"; 
    return getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder); 
} 

、それはで死ぬ:

You can use all columns defined for ContactsContract.Data as well as the following aliases. 

は、私が何をしないのです:ContactsContract.CommonDataKinds.Phoneのためのドキュメントから

java.lang.IllegalArgumentException: Invalid column vnd.android.cursor.item/phone_v2 

それははっきりと述べていますか?

答えて

1

Phone.CONTENT_ITEM_TYPEは問題です。これは列名ではなく、Data.MIME_TYPEが設定されている定数です。あなたの投影からそれを削除し、それは正常でなければなりません。

関連する問題