簡體   English   中英

如何在android中讀取姓名的電話號碼和所有聯系人的電子郵件地址

[英]How can i read names phone numbers and email addresses of all contacts in android

我正在創建一個應用程序,它獲取每個特定名稱的所有名稱,電話號碼和電子郵件,我有點卡住了。主題,但無法同時獲取全部三個對象。 我正在將名稱,電話和電子郵件保存在二叉樹中。.我是初學者。需要幫助!

這是我的代碼:

    package com.example.contactify;

import android.content.ContentProviderOperation;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.example.Tree.ContactNode;

public class MainPage extends Activity implements OnClickListener {

    ProgressBar progress;
    TextView tv;
    ContactNode t;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mainmenu);
        Button createmagic = (Button) findViewById(com.example.contactify.R.id.cButton);
        tv = (TextView) findViewById(R.id.textView3);
        createmagic.setOnClickListener(this);
        t = new ContactNode();

    }


    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub

        switch (arg0.getId()) {
            case R.id.cButton: {
                try {

                    ContactNode contact = getContacts();
                    Intent i = new Intent("com.example.contactify.CreateNames");
                    i.putExtra("Contact", Names(t.root));
                    startActivity(i);


                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    Toast.makeText(this, e.getLocalizedMessage().toString(), Toast.LENGTH_LONG).show();
                }
                break;
            }
            case R.id.uButton: {

                break;
            }

        }
    }


    String Names(ContactNode tree) {
        return tree.getNames(tree);
    }


    ContactNode getContacts() {

        final String[] PROJECTION = new String[]{
                ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
                ContactsContract.Contacts.DISPLAY_NAME,
                ContactsContract.CommonDataKinds.Email.DATA,
                ContactsContract.CommonDataKinds.Phone.NUMBER
        };

        ContentResolver cr = getContentResolver();
        Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, PROJECTION, null, null, null);
        if (cursor != null) {
            try {
                final int contactIdIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID);
                final int displayNameIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
                final int emailIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA);
                long contactId;
                String displayName, address, phoneNo;


                while (cursor.moveToNext()) {

                  //  Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
                    if (Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {

                        contactId = cursor.getLong(contactIdIndex);
                        displayName = cursor.getString(displayNameIndex);
                        address = cursor.getString(emailIndex);

                        Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactIdIndex,null, null);
                        while (phones.moveToNext())
                        {
                            phoneNo = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                            t.insertContact(displayName, phoneNo, address);
                        }
                        phones.close();

                    }
                }
            } finally {
                cursor.close();
            }

        }
        return t;
    }

}

電話號碼在android中具有多種類型。 像家庭,手機,辦公室等,因此您要多次添加具有空值的同一個人的電話號碼。

參考: http : //developer.android.com/reference/android/provider/Contacts.PhonesColumns.html

參考: http : //developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Phone.html

因此,您還使用電話光標來檢索電話號碼。 一個聯系人可能有0個或多個電話號碼。 您需要決定要哪個。 如果您想要除此以外的任何一個

 Cursor phones =     getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactIdIndex,null, null);
 phoneNo = null;
 while (phones.moveToNext())
 {
    phoneNo = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));                           
 }
 phones.close();

 //this is if the phone exist then only it added
 if(phoneNo != null)
     t.insertContact(displayName, phoneNo, address);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM