安卓开发:获取手机通讯录信息

Posted 西红柿里没有番茄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓开发:获取手机通讯录信息相关的知识,希望对你有一定的参考价值。

 

  写一个安卓软件,实现获取通讯录里的人名和对应的电话号码,并且通过ListView显示出来。

 

  因为要获取手机本地的信息,所以第一个步骤就是先给定权限咯

 <uses-permission android:name="android.permission.READ_CONTACTS"/>

 

 

因为获取到信息后是通过ListView显示出来,所以把布局写好,总共两个布局,一个布局放ListView,一个布局放ListView的子布局,这里比较基础,就不放代码了

 

接着就是通过java代码实现功能了

package com.contentprovide.liuliu.test_9_12_01;

import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class MainActivity extends AppCompatActivity {

ListView mylist;

List<HashMap<String, String>> list;
HashMap<String, String> hash;

Cursor cursor;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mylist = (ListView) findViewById(R.id.list);
list = new ArrayList();

// 实例化数据库指针
cursor = this.getContentResolver().
query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);

// 获取本地通讯录信息,并通过键值对的方式放进ArrayList数组中
while (cursor.moveToNext()) {

String get_name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String get_number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

hash = new HashMap<>();
hash.put("h_name", get_name);
hash.put("h_number", get_number);

list.add(hash);
}

mylist.setAdapter(new MyAdapter());

}

// 适配器
class MyAdapter extends BaseAdapter {

@Override
public int getCount() {
return list.size();
}

@Override
public Object getItem(int i) {
return i;
}

@Override
public long getItemId(int i) {
return i;
}

@Override
public View getView(int i, View view, ViewGroup viewGroup) {

Myholder myholder;

if (view == null) {
view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item, null);
myholder = new Myholder();

myholder.myname = view.findViewById(R.id.name);
myholder.mynumber = view.findViewById(R.id.number);

view.setTag(myholder);

} else {

myholder = (Myholder) view.getTag();

}


myholder.myname.setText(list.get(i).get("h_name"));
myholder.mynumber.setText(list.get(i).get("h_number"));


return view;


}

class Myholder {
TextView myname;
TextView mynumber;
}
}


}

 















































































































以上是关于安卓开发:获取手机通讯录信息的主要内容,如果未能解决你的问题,请参考以下文章

android开发怎样获取通讯录联系人信息

android开发怎样获取通讯录联系人信息

安卓手机如何开始通讯录和位置信息权限?

android 安卓APP获取手机设备信息和手机号码的代码示例

android开发怎样获取通讯录联系人信息

安卓手机手机微信如何设置允许访问通讯录