0

Android の Uri について 1 つ質問があります。友人のコードに従って、ユーザーから連絡先を選択するインテントを起動し、onActivityResultメソッドで結果を管理していました。

すべて問題ないように見え、最初の引数として Uri を使用したクエリで連絡先情報にアクセスできます。問題は、後で (アプリケーションの別の実行時に) ユーザー情報にアクセスするためにその Uri を保存しようとすることです。toString()Uri を両方とも文字列として保存しようとしましgetEncodedPath()たが、一見有効な Uri を返しますが、解析された Uri を渡す名前を取得するために同じコードを実行しようとすると、null が返されます。

以前に名前を取得したので null ではないことはわかっていますが、何が間違っているのかわかりません。ありがとうございました!

onActivityResult 内の名前を取得するためのコード(動作します):

Uri contactData = data.getData();  
Cursor lookupCursor =  this.getContentResolver().query(contactData, null, null, null, null);
if (lookupCursor.moveToFirst()) {                                       
    String lookupKey = lookupCursor.getString(lookupCursor.getColumnIndexOrThrow(android.provider.ContactsContract.PhoneLookup.LOOKUP_KEY));
           lookupCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                                        null,ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY + " LIKE '" + lookupKey + "'", null, null);  
                            if (lookupCursor.moveToFirst()) {
                                    int nameIdx = lookupCursor.getColumnIndex(Phone.DISPLAY_NAME);
                                    String name = lookupCursor.getString(nameIdx);
                            } 
                    }

別の場所で、カスタム クラスからとはいえ、同じコードを実行していますが、コンテキストを渡して contentResolver を取得しています。ただし、連絡先選択インテントによって返された正確な文字列をコピーする場合でも、 parse メソッドの呼び出しがUri返されます。null

私は途方に暮れています:(

4

0 に答える 0