用ContentProvider内容提供者的技术来获取手机上的联系人,比如开发软件时,如果您的好友也是软件用户,则可以通过手机联系人直接添加好友
下面是实现步骤
这里就模仿一下获得
首先在你的界面打一个按钮来获得
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="获取手机联系人"
android:onClick="getContacts"
/>
然后在相对应的的activity中编写以下代码
public class MainActivity extends AppCompatActivity {
private ContentResolver cr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取内容访问者
cr = getContentResolver();
}
//定义获得联系人的方法
public void getContacts(View view){
//解析URI content://com.android.contacts/raw_contacts是获得联系人的协议
//记得加content://
Uri uri=Uri.parse("content://com.android.contacts/raw_contacts");
Cursor cursor=cr.query(uri,null,null,null,null);
while (cursor.moveToNext()){
//获得联系人的id
int _id=cursor.getInt(cursor.getColumnIndex("_id"));
//获得联系人姓名
String display_name=cursor.getString(cursor.getColumnIndex("display_name"));
//循环打印你所有的联系人
Log.i("test",_id+" "+display_name);
//循环获得联系人的信息
//"content://com.android.contacts/raw_contacts/"+_id+"/data" 协议
Uri uriData=Uri.parse("content://com.android.contacts/raw_contacts/"+_id+"/data");
Cursor cursorData=cr.query(uriData,null,null,null,null);
while (cursorData.moveToNext()){
String mimetype=cursorData.getString(cursorData.getColumnIndex("mimetype"));
String data1=cursorData.getString(cursorData.getColumnIndex("data1"));
//如果是电话,则打印
// vnd.android.cursor.item/phone_v2是联系人姓名,同样的还有email,住址等
if("vnd.android.cursor.item/phone_v2".equals(mimetype)){
//
Log.i("test"," "+mimetype+" "+data1);
}
}
}
}
}
因为现在的手机越来越高级,处理的比较好,所以最后记得添加权限
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
当然,有一些手机的权限还是比较高还是拿不到联系人是有可能的、