How to get a email for particular phone number

后端 未结 2 784
名媛妹妹
名媛妹妹 2021-01-07 11:02

I want get a email for a particular phone number.

Here is my code

private static String getEmailAndName(String number, Context context) {
        Str         


        
相关标签:
2条回答
  • 2021-01-07 11:10

    To get the email address stored of a particular contact in phone book. This code works for me:

    private Button btn;
    private String TAG = "Contacts";
    private static final int RESULT_PICK_CONTACT = 1;
    
    
    btn.setOnClickListener(new View.OnClickListener() {    
        @Override
        public void onClick(View v) {
        selectSingleContact();
        }
    });
    
    private void selectSingleContact() {   
        Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
        startActivityForResult(contactPickerIntent, RESULT_PICK_CONTACT);
    }
    
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        // check whether the result is ok
        if (resultCode == RESULT_OK) {
            // Check for the request code, we might be usign multiple startActivityForResult
            switch (requestCode) {
                case RESULT_PICK_CONTACT:
                    contactPicked(data);
                    break;
            }
        } else {
            Log.e("ContactFragment", "Failed to pick contact");
        }
    }
    
    private void contactPicked(Intent data) {
    
        Uri uri = data.getData();
        Log.i(TAG, "contactPicked() uri " + uri.toString());
        Cursor cursor;
        ContentResolver cr = getActivity().getContentResolver();
    
        try {
            Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
            if (null != cur && cur.getCount() > 0) {
                cur.moveToFirst();
                for (String column : cur.getColumnNames()) {
                    Log.i(TAG, "contactPicked() Contacts column " + column + " : " + cur.getString(cur.getColumnIndex(column)));
                }
            }
    
            if (cur.getCount() > 0) {
              //Query the content uri
                cursor = getActivity().getContentResolver().query(uri, null, null, null, null);
    
                if (null != cursor && cursor.getCount() > 0) {
                    cursor.moveToFirst();
                    for (String column : cursor.getColumnNames()) {
                        Log.i(TAG, "contactPicked() uri column " + column + " : " + cursor.getString(cursor.getColumnIndex(column)));
                    }
                }
    
                cursor.moveToFirst();
                id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
                Log.i(TAG, "contactPicked() uri id " + id);
                String contact_id = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));
                Log.i(TAG, "contactPicked() uri contact id " + contact_id);
                // column index of the contact name
                name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                // column index of the phone number
                phoneNo = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                //get Email id of selected contact....
                Log.e("ContactsFragment", "::>> " + id + name + phoneNo);
    
                Cursor cur1 = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,
                        ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[]{contact_id}, null);
    
                if (null != cur1 && cur1.getCount() > 0) {
                    cur1.moveToFirst();
                    for (String column : cur1.getColumnNames()) {
                        Log.i(TAG, "contactPicked() Email column " + column + " : " + cur1.getString(cur1.getColumnIndex(column)));
                        email = cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                    }
                    //Here you get name, number & email...
                    Log.e("setcontactDetails","::>>" + name+"\nPhoneno:" + phoneNo+"\nEmail: " + email);
                } else {
                     Log.e("setcontactDetails","::>>" + name+"\nPhoneno:" + phoneNo+"\nEmail: " + email);
                }
            }
        } catch (IndexOutOfBoundsException e) {
            e.printStackTrace();
        }
    }
    

    Also add permissions to AndroidManifest.xml

    0 讨论(0)
  • 2021-01-07 11:32

    Here is the solution:

    public static String[] getContactInfo(String phoneNumber, Context context) {
            String info[] = new String[2];
    
            ContentResolver mResolver = context.getContentResolver();
            Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
    
            Cursor cursor = mResolver.query(uri, new String[] {
                    ContactsContract.PhoneLookup.DISPLAY_NAME, ContactsContract.PhoneLookup._ID }, null, null, null);
    
            String contactId = "";
            if (cursor.moveToFirst()) {
                do {
                    contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.PhoneLookup._ID));
                } while (cursor.moveToNext());
            }
    
            //Get Name....
            String[] projection = new String[] { ContactsContract.Contacts.DISPLAY_NAME };
            cursor = mResolver.query(ContactsContract.Contacts.CONTENT_URI, projection,
                    ContactsContract.Contacts._ID + "=?", new String[]{contactId}, null);
    
            String name = "";
            if (cursor.moveToFirst()) {
                name = cursor.getString(0);
            }
    
            //Get Email Address....
            cursor = mResolver.query(
                    ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,
                    ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",new String[]{contactId}, null);
            String email="";
            while (cursor.moveToNext())
            {
                email = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                int emailType = cursor.getInt(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
            }
            cursor.close();
            info[0] = name;
            info[1] = email;
            return info;
        }
    
    0 讨论(0)
提交回复
热议问题