0

ContactsContract.CommonDataKinds MIMETYPE 定数を、カーソルでクエリしたものと一致させることができないようです。2 つの文字列をテストしたところ、同じように見えますが、条件で比較すると「true」が返されません。

この問題が発生するメソッドのコード スニペットを次に示します。

    //gets all the information from the cursor and puts into its respective ArrayList
    for(int i=0; i<C.getCount(); i++){
        HashMap<String, String> info = new HashMap<String,String>();
        info.put(C.getString(3),C.getString(4));
        Log.d(TAG, "Itertation: "+i);
        Log.d(TAG, "Row Data MIMETYPE: "+C.getString(2));
        Log.d(TAG, "Phone MIMETYPE constant: "+ ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE); //this line and the above line return the exact same string when the data types match
        if(C.getString(2) == ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE){
            Log.d(TAG, "I have entered the phone condition");//does not enter even if they are identical
            phoneNum.add(info);
        }else if(C.getString(2) == ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE){
            Log.d(TAG, "I have entered the Email condition");//does not enter
            emailAddress.add(info);
        }else if(C.getString(2) == ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE){
            Log.d(TAG, "I have entered the Address condition");//does not enter
            postalAddress.add(info);
        }
        C.moveToNext();
    }

C.getString(2) はその行の MIMETYPE です。クエリとそのパラメーターのスニペットを次に示します。

//query properties
private Uri mUri = ContactsContract.Data.CONTENT_URI;
private String[] mProjections = {ContactsContract.Data.CONTACT_ID, ContactsContract.Data._ID, ContactsContract.Data.MIMETYPE, 
        ContactsContract.Data.DATA1, ContactsContract.Data.DATA2};
private String mSelection = ContactsContract.Data.CONTACT_ID+ "='"; //the ending of this gets added in the code
private String[] mArgs = null;
private String mSortOrder = null;

C = getContentResolver().query(mUri, mProjections, mSelection , mArgs, mSortOrder);

比較がtrueを返さないという手がかりはありません。一致する必要がある反復について LogChat をチェックすると、次のようになります。

07-13 17:11:48.764: D/ContactDetail(2904): Itertation: 0
07-13 17:11:48.764: D/ContactDetail(2904): Row Data MIMETYPE: vnd.android.cursor.item/phone_v2
07-13 17:11:48.764: D/ContactDetail(2904): Phone MIMETYPE constant: vnd.android.cursor.item/phone_v2

これが機能しない理由を誰かが知っていますか? 私の理解では、Data ではなく CommonDataKinds から定数 MIMETYPE を取得していますが (そこに定数が見つからないようです。Data に定数があるかどうか教えてください)、クエリの MIMETYPE と同じである必要がありますが、多分それらは実際には異なります。それ以外は、なぜそれが機能しないのかわかりません。

4

0 に答える 0