0

ほとんどのユーザーにとって十分に効率的であると考えたため、API13用のアプリの作成を開始しました。しかし、私はそれをapi10に変更しました。それから次のコードは動作を停止しました`

             String empName=data.getStringExtra("name");
             String hourPay=data.getStringExtra("hourPay");
             String key="";
             String id=""; 

            Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_FILTER_URI, empName);
            Cursor idCursor = getContentResolver().query(lookupUri, null, null, null, null);                

            idCursor.moveToFirst();
            id = idCursor.getString(idCursor.getColumnIndex(ContactsContract.Contacts._ID));
            key = idCursor.getString(idCursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));`

問題は、英語で書かれた連絡先の名前、または名前だけ(名前ではない)の連絡先の名前でのみ機能することです。

例:次の連絡先で機能します:Express Service、George、Maria Mpakou、Σοφια、言語の区別なし

しかし、連絡先が私の言語(ギリシャ語)で書かれていて、スペースがある場合(例:ΑιμιλιοςΔημιος)、範囲外のインデックスで下のカーソルを返します。

私が最初にAPI13を試したとき、魅力のように機能しました。ちなみに、私のAndroid.Manifestにはutf-8エンコーディングがありますが、それが関係している場合は、推奨事項を教えてください。ありがとう

4

1 に答える 1

0

多くの検索の後、私は最終的に別の方法でそれを行いました...すべての連絡先にSQLクエリを要求するようなものです

コードは次のとおりです。

String empName=data.getStringExtra("name");
Cursor idCursor = getContentResolver().query(                 
ContactsContract.Contacts.CONTENT_URI,null,Contacts.DISPLAY_NAME+" = '"+empName+"'", null, null);

それは魅力のように機能しました!

于 2012-07-04T07:15:00.677 に答える