0

指定された名前に対応する連絡先から電話番号を取得する必要があるアプリケーションを開発しています。私は多くのコードを試しましたが、どれも機能していないようです。

これが私が現在使用しているコードです

public static String getContactPhoneNumber(Context context, String contactName, int type) {
        String phoneNumber = null;

        String[] whereArgs = new String[] { contactName, String.valueOf(type) };

        Log.d(TAG, String.valueOf(contactName));

        Cursor cursor = context.getContentResolver().query(
                ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                null,
                ContactsContract.Contacts.DISPLAY_NAME + " = ? and "
                        + ContactsContract.CommonDataKinds.Phone.TYPE + " = ?", whereArgs, null);

        int phoneNumberIndex = cursor
                .getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER);

        Log.d(TAG, String.valueOf(cursor.getCount()));

        if (cursor != null) {
            Log.v(TAG, "Cursor Not null");
            try {
                if (cursor.moveToNext()) {
                    Log.v(TAG, "Moved to first");
                    Log.v(TAG, "Cursor Moved to first and checking");
                    phoneNumber = cursor.getString(phoneNumberIndex);
                }
            } finally {
                Log.v(TAG, "In finally");
                cursor.close();
            }
        }

        Log.v(TAG, "Returning phone number");
        return phoneNumber;
    }

連絡先名(たとえば、John Doe)とタイプ(Mobile Typeのint値である2)を渡すと、連絡先「John Doe」が連絡先リストに存在していても、返される電話番号はnullになります。

助けてください!!!

4

1 に答える 1

0

これを試して

パラメータをクエリメソッドにContactsContract.CommonDataKinds.Phone.CONTENT_URI渡す 代わりに。ContactsContract.Contacts.CONTENT_URI

于 2012-04-26T05:43:16.740 に答える