获取手机通讯录联系人(包含模糊查询,dialog自定义,也有一个自定义通知栏)
2016-09-03 14:14
405 查看
这里还有一个联系人类:
代码如下:
全部多是ArrayList我是为了我的ListView 显示的。
这里有个全部代码,可以获得联系人 头像名称 手机号码:(也包含了一个dialog可以忽略不看)
xml文件:(ListView没有贴上去,大家可以自己写,这里只是一个item)
dialog也可以看看:(这是我写的自定义的对话框)
package com.example.sendmsg; import android.graphics.Bitmap; public class ContactEntity { /** 联系人名称 **/ private String name; /** 联系人号码 **/ private String number; /** 联系人头像 **/ private Bitmap photo; public ContactEntity(String name, String number, Bitmap photo) { super(); this.name = name; this.number = number; this.photo = photo; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } public Bitmap getPhoto() { return photo; } public void setPhoto(Bitmap photo) { this.photo = photo; } }
代码如下:
//获取手机联系人(全部) public ArrayList<Birthday> getPhone(){ ArrayList<Birthday> person = new ArrayList<Birthday>(); final String[] PHONES_PROJECTION = new String[] {Phone.DISPLAY_NAME, Phone.NUMBER }; /** 联系人显示名称 **/ final int PHONES_DISPLAY_NAME_INDEX = 0; /** 电话号码 **/ final int PHONES_NUMBER_INDEX = 1; ContentResolver resolver = context.getContentResolver(); Cursor phoneCursor = resolver.query(Phone.CONTENT_URI,PHONES_PROJECTION, null, null, null); while (phoneCursor.moveToNext()){ // 得到手机号码 String phoneNumber = phoneCursor.getString(PHONES_NUMBER_INDEX); // 当手机号码为空的或者为空字段 跳过当前循环 if (TextUtils.isEmpty(phoneNumber)) continue; // 得到联系人名称 String contactName = phoneCursor.getString(PHONES_DISPLAY_NAME_INDEX); Birthday birth = new Birthday(); birth.setName(contactName); birth.setPhone_number(phoneNumber); person.add(birth); } return person; } //模糊查询联系人 public ArrayList<Birthday> getPhone_num(String name){ ArrayList<Birthday> person = new ArrayList<Birthday>(); final String[] PHONES_PROJECTION = new String[] {Phone.DISPLAY_NAME, Phone.NUMBER }; /** 联系人显示名称 **/ final int PHONES_DISPLAY_NAME_INDEX = 0; /** 电话号码 **/ final int PHONES_NUMBER_INDEX = 1; ContentResolver resolver = context.getContentResolver(); Cursor phoneCursor = resolver.query(Phone.CONTENT_URI,PHONES_PROJECTION,Phone.DISPLAY_NAME+" LIKE ? ",new String[] { "%" + name + "%" }, null);//模糊查询 while (phoneCursor.moveToNext()){ // 得到手机号码 String phoneNumber = phoneCursor.getString(PHONES_NUMBER_INDEX); // 当手机号码为空的或者为空字段 跳过当前循环 if (TextUtils.isEmpty(phoneNumber)) continue; // 得到联系人名称 String contactName = phoneCursor.getString(PHONES_DISPLAY_NAME_INDEX); Birthday birth = new Birthday(); birth.setName(contactName); birth.setPhone_number(phoneNumber); person.add(birth); } return person; }
全部多是ArrayList我是为了我的ListView 显示的。
这里有个全部代码,可以获得联系人 头像名称 手机号码:(也包含了一个dialog可以忽略不看)
package com.example.sendmsg; import java.io.InputStream; import java.util.ArrayList; import java.util.zip.Inflater; import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.app.ActionBar; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.ContentResolver; import android.content.ContentUris; import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.provider.ContactsContract; import android.provider.ContactsContract.CommonDataKinds.Phone; import android.telephony.SmsManager; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class PersonListActivity extends Activity{ private ListView personlistview; private Builder builder; private ImageView main_image; private TextView title; /** 联系人名称 **/ private ArrayList<ContactEntity> mContacts = new ArrayList<ContactEntity>(); /** 联系人,手机号码,头像 **/ private static final String[] PHONES_PROJECTION = new String[] {Phone.DISPLAY_NAME, Phone.NUMBER, Phone.PHOTO_ID, Phone.CONTACT_ID}; /** 联系人显示名称 **/ private static final int PHONES_DISPLAY_NAME_INDEX = 0; /** 电话号码 **/ private static final int PHONES_NUMBER_INDEX = 1; /** 头像ID **/ private static final int PHONES_PHOTO_ID_INDEX = 2; /** 联系人的ID **/ private static final int PHONES_CONTACT_ID_INDEX = 3; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.personlist); init(); getPhoneContacts(); PersonListAdapter adapter = new PersonListAdapter(PersonListActivity.this, mContacts); personlistview.setAdapter(adapter); personlistview.setOnItemClickListener(new PersonListClick()); } @TargetApi(Build.VERSION_CODES.HONEYCOMB) @SuppressLint("NewApi") public void init(){ personlistview = (ListView) findViewById(R.id.personlistview); main_image = (ImageView) findViewById(R.id.main_image); title = (TextView) findViewById(R.id.title); main_image.setOnClickListener(new BackOnclcik()); ActionBar actionBar = getActionBar(); actionBar.hide(); //定义一个AlertDialog.Builder对象 builder = new AlertDialog.Builder(this); } private void getPhoneContacts(){ ContentResolver resolver = getContentResolver(); // 获取手机联系人 Cursor phoneCursor = resolver.query(Phone.CONTENT_URI,PHONES_PROJECTION, null, null, null); if (phoneCursor != null){ while (phoneCursor.moveToNext()){ // 得到手机号码 String phoneNumber = phoneCursor.getString(PHONES_NUMBER_INDEX); // 当手机号码为空的或者为空字段 跳过当前循环 if (TextUtils.isEmpty(phoneNumber)) continue; // 得到联系人名称 String contactName = phoneCursor.getString(PHONES_DISPLAY_NAME_INDEX); // 得到联系人ID Long contactid = phoneCursor.getLong(PHONES_CONTACT_ID_INDEX); // 得到联系人头像ID Long photoid = phoneCursor.getLong(PHONES_PHOTO_ID_INDEX); // 得到联系人头像Bitamp Bitmap contactPhoto = null; // photoid 大于0 表示联系人有头像 如果没有给此人设置头像则给他一个默认的 if (photoid > 0){ Uri uri = ContentUris.withAppendedId( ContactsContract.Contacts.CONTENT_URI,contactid); InputStream input = ContactsContract.Contacts .openContactPhotoInputStream(resolver, uri); contactPhoto = BitmapFactory.decodeStream(input); }else{ contactPhoto = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); } ContactEntity mContact = new ContactEntity(contactName,phoneNumber, contactPhoto); mContacts.add(mContact); } phoneCursor.close(); } } class PersonListClick implements OnItemClickListener{ @Override public void onItemClick(AdapterView<?> arg0, final View arg1, int arg2, long arg3) { // TODO Auto-generated method stub //装载/res/layout/login.xml界面布局 LinearLayout loginForm = (LinearLayout)getLayoutInflater().inflate(R.layout.dialog,null); ImageView headimage = (ImageView) loginForm.findViewById(R.id.headimage); TextView personname = (TextView) loginForm.findViewById(R.id.personname); EditText msgcontent = (EditText) loginForm.findViewById(R.id.msg_text); LinearLayout button1 = (LinearLayout) loginForm.findViewById(R.id.button1);//取消 LinearLayout button2 = (LinearLayout) loginForm.findViewById(R.id.button2);//确定 //处理内容 ImageView image = (ImageView) arg1.findViewById(R.id.personimage); Bitmap bm = ((BitmapDrawable)image.getDrawable()).getBitmap(); headimage.setImageBitmap(bm); TextView text = (TextView) arg1.findViewById(R.id.personname); String name = text.getText().toString(); personname.setText(name); Intent intent = getIntent(); final String context = intent.getStringExtra("context"); msgcontent.setText(context); //按钮点击事件 button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub finish(); } }); button2.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub TextView phone = (TextView) arg1.findViewById(R.id.personnumber); String number = phone.getText().toString(); SmsManager manager = SmsManager.getDefault(); ArrayList<String> list = manager.divideMessage(context); //因为一条短信有字数限制,因此要将长短信拆分 for(String text:list){ manager.sendTextMessage(number, null, text, null, null); } Toast.makeText(getApplicationContext(), "发送完毕", Toast.LENGTH_SHORT).show(); } }); // 设置对话框显示的View对象 builder.setView(loginForm); //创建、并显示对话框 builder.create().show(); } } class BackOnclcik implements OnClickListener{ @Override public void onClick(View arg0) { // TODO Auto-generated method stub finish(); } } }
xml文件:(ListView没有贴上去,大家可以自己写,这里只是一个item)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingLeft="10dp" android:paddingTop="10dp" android:paddingBottom="10dp" android:paddingRight="10dp" android:descendantFocusability="afterDescendants"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <ImageView android:layout_width="50dp" android:layout_height="50dp" android:id="@+id/personimage" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingLeft="5dp" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_vertical" android:id="@+id/personname" android:textSize="18dp" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_vertical" android:id="@+id/personnumber" android:textSize="18dp" /> </LinearLayout> </LinearLayout> </LinearLayout>
dialog也可以看看:(这是我写的自定义的对话框)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="15dp" android:orientation="vertical" android:background="#ffffff" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/dialog_sendText" android:text="@string/dialog_send" android:paddingLeft="10dp" android:textSize="18dp" android:textStyle="bold" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingLeft="10dp" android:paddingTop="10dp" android:paddingBottom="10dp" > <ImageView android:layout_width="30dp" android:layout_height="30dp" android:id="@+id/headimage" /> <TextView android:layout_width="fill_parent" android:layout_height="30dp" android:gravity="center_vertical" android:paddingLeft="10dp" android:id="@+id/personname" android:textSize="18dp" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingTop="10dp" > <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/msg_text" android:background="@drawable/bg_edittext" android:padding="5dp" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:textColorHint="#AAAAAA" android:textSize="15dip" android:singleLine="true" android:inputType="textMultiLine" android:gravity="left|top" android:minLines="6" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingTop="15dp" android:divider="@drawable/layoutline" android:showDividers="middle" > <LinearLayout android:layout_width="fill_parent" android:layout_height="30dp" android:layout_weight="1" android:orientation="horizontal" android:id="@+id/button1" android:background="@drawable/conner_" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:id="@+id/text1" android:text="@string/quxiao" android:textSize="18dp" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="30dp" android:layout_weight="1" android:orientation="horizontal" android:id="@+id/button2" android:background="@drawable/conner_" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:id="@+id/text2" android:text="@string/queding" android:textSize="18dp" /> </LinearLayout> </LinearLayout> </LinearLayout>
相关文章推荐
- 自定义dialog包含一个显示图片的listview
- Android进阶篇-获取手机通讯录联系人头像
- Android 自定义通讯录(仿Ios反弹效果+模糊搜索+查看手机通讯录+拉伸导航条)
- ContentProvider与隐式Intent获取手机联系人通讯录信息或电话的方法
- 获取手机通讯录联系人 CNContacts
- ios开发之获取手机通讯录中所有联系人的信息二
- Android通讯录模糊查询搜索(号码,姓名,首字母简拼,全拼),批量选取联系人
- 获取手机通讯录联系人
- Android手机获取通讯录联系人信息及短信广播实现
- Android 获取手机联系人和手机短信和一个简单的yinyue
- 自定义dialog包含一个显示图片的listview
- android获取手机通讯录联系人
- iOS开发之获取手机通讯录联系人信息<二>
- android 获取手机通讯录联系人,模拟通讯录显示
- 获取手机通讯录的实战应用(含SIM卡中的联系人)
- Android 获取手机通讯录信息 — 头像、姓名和A-Z的快速查询
- Android开发--模拟通讯录包含模糊查询
- 获取手机联系人以及向通讯录插入数据.
- ContentProvider与隐式Intent获取手机联系人通讯录信息或电话的方法
- 仿IOS通讯录效果,实现获取手机通讯录、字母排序显示、搜索联系人、拨打电话