ContentProvider获取手机联系人

直接上图:这里写图片描述

直接代码走起:

import android.content.ContentResolver;
import android.database.Cursor;
import android.provider.ContactsContract;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.example.simulate.R;

public class TryaginActivity extends AppCompatActivity {
  TextView text;
    Button button;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tryagin);
        text= (TextView) findViewById(R.id.text_try);
        button= (Button) findViewById(R.id.btn_try);
        button.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              StringBuilder sb=getContacts();
              text.setText(sb.toString());
          }
      });
    }
    private StringBuilder getContacts()
    {
        StringBuilder  sbLog = new StringBuilder();
        // 得到ContentResolver对象
        ContentResolver cr=this.getContentResolver();
        // 取得电话本中开始一项的光标,主要就是查询"contacts"表
        Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
        if(!cursor.moveToFirst()){
            sbLog.append("获取内容为空!");
            return sbLog;
        }
        if(cursor.moveToFirst())
        {
            // 取得联系人名字(显示出来的名字),实际内容在ContactsContract.Contacts中
            int nameIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
            String name = cursor.getString(nameIndex);
            sbLog.append("name=" + name + ";");
            // 取得联系人ID
            String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
            // 根据联系人ID查询对应的电话号码
            Cursor phoneNumbers = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                    null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "
                    + contactId, null, null);
            // 取得电话号码(可能存在多个号码)
            while (phoneNumbers.moveToNext())
            {
                String strPhoneNumber = phoneNumbers.getString(
                        phoneNumbers.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                sbLog.append("Phone=" + strPhoneNumber + ";");
            }
            phoneNumbers.close();
            // 根据联系人ID查询对应的email
          /*  Cursor emails = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
                    null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = "
                    + contactId, null, null);
            // 取得email(可能存在多个email)
            while (emails.moveToNext())
            {
                String strEmail =
                        emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                sbLog.append("Email=" + strEmail + ";");
            }
            emails.close();*/
        }
        cursor.close();
        Log.e("-------------------", sbLog.toString());
        return sbLog;
    }

}

当然最后不要忘记权限哦:

猜你喜欢

转载自blog.csdn.net/qq_36423978/article/details/72329829
今日推荐