递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 4495|回复: 1
打印 上一主题 下一主题

如何读取通讯录呢?或者有大神可以告知如何封装JAVA代码

 关闭 [复制链接]

3

主题

6

帖子

70

积分

注册会员

Rank: 2

积分
70
跳转到指定楼层
楼主
发表于 2018-2-6 08:09:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 αdмīи 于 2018-2-6 08:27 编辑

火山如何读取通讯录和保存联系人至通讯录呢?

网上查阅到一篇Android读取联系人的资料,可是对于怎么使用是一头雾水,不知道应该如何封装进火山进行使用有没有大神愿意帮忙领下路告知下这种情况应该如何进行封装,如果下面这些代码可以做个简单的封装例子就更好了~ 先谢为敬!


以下为网上查阅到的Java代码:

Android中获取单个联系人的详细信息
  1. package com.example.chauncey.searchbar;

  2. import android.content.Context;
  3. import android.content.Intent;
  4. import android.database.Cursor;
  5. import android.provider.ContactsContract;

  6. /**
  7. * Created by chauncey on 2017/4/26.
  8. */

  9. public class ContactUtil {

  10.     /**
  11.      * 获取单个联系的详细信息
  12.      *
  13.      * @param context
  14.      * @param data    调用系统联系人返回的Intent
  15.      */
  16.     public static void getContactInfo(Context context, Intent data) {

  17.         //获取联系人id游标
  18.         Cursor idCursor = context.getContentResolver().query(data.getData(), null, null, null,
  19.                 null);
  20.         idCursor.moveToFirst();
  21.         //获取联系人的id,用于筛选
  22.         String contactId = idCursor.getString(idCursor.getColumnIndex(ContactsContract.Contacts._ID));

  23.         if (!idCursor.isClosed())
  24.             idCursor.close();

  25.         //获取系统的所有联系人中筛选出id为“contactId”的所有信息
  26.         Cursor cursor = context.getContentResolver().query(ContactsContract.Data.CONTENT_URI,
  27.                 null,
  28.                 ContactsContract.Data.CONTACT_ID + " = " + contactId,
  29.                 null, null);

  30.         //遍历所有内容
  31.         while (cursor.moveToNext()) {
  32.             //获取mimetype,通过mimetype来判断当前数据的类型
  33.             String mimetype = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.MIMETYPE));
  34.             switch (mimetype) {
  35.                 //联系人名称
  36.                 case ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE:
  37.                     String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME));
  38.                     break;
  39.                 //联系人电话号码,注意电话号码有多个且类型可能不同
  40.                 case ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE:

  41.                     int phoneIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
  42.                     int phoneTypeIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE);
  43.                     int phoneType = cursor.getInt(phoneTypeIndex);
  44.                     String number = cursor.getString(phoneIndex);

  45.                     switch (phoneType) {
  46.                         //移动手机
  47.                         case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE:
  48.                             String mobile = number;
  49.                             break;
  50.                         //家用座机
  51.                         case ContactsContract.CommonDataKinds.Phone.TYPE_HOME:
  52.                             String phone = number;
  53.                             break;
  54.                         //家用传真
  55.                         case ContactsContract.CommonDataKinds.Phone.TYPE_FAX_HOME:
  56.                             String faxHome = number;
  57.                             break;

  58.                         default:
  59.                             break;

  60.                         //一共有20种类型
  61.                         // public static final int TYPE_HOME = 1;
  62.                         // public static final int TYPE_MOBILE = 2;
  63.                         // public static final int TYPE_WORK = 3;
  64.                         // public static final int TYPE_FAX_WORK = 4;
  65.                         // public static final int TYPE_FAX_HOME = 5;
  66.                         // public static final int TYPE_PAGER = 6;
  67.                         // public static final int TYPE_OTHER = 7;
  68.                         // public static final int TYPE_CALLBACK = 8;
  69.                         // public static final int TYPE_CAR = 9;
  70.                         // public static final int TYPE_COMPANY_MAIN = 10;
  71.                         // public static final int TYPE_ISDN = 11;
  72.                         // public static final int TYPE_MAIN = 12;
  73.                         // public static final int TYPE_OTHER_FAX = 13;
  74.                         // public static final int TYPE_RADIO = 14;
  75.                         // public static final int TYPE_TELEX = 15;
  76.                         // public static final int TYPE_TTY_TDD = 16;
  77.                         // public static final int TYPE_WORK_MOBILE = 17;
  78.                         // public static final int TYPE_WORK_PAGER = 18;
  79.                         // public static final int TYPE_ASSISTANT = 19;
  80.                         // public static final int TYPE_MMS = 20;
  81.                     }

  82.                     break;

  83.                 //获取email
  84.                 case ContactsContract.CommonDataKinds.Email.CONTENT_TYPE:
  85.                     String email = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.ADDRESS));
  86.                     break;

  87.                 //获取备注
  88.                 case ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE:
  89.                     String note = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Note.NOTE));
  90.                     break;

  91.                 //获取通讯地址
  92.                 case ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE:

  93.                     String street = cursor.getString(cursor
  94.                             .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET));

  95.                     String poBox = cursor.getString(cursor
  96.                             .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POBOX));

  97.                     String city = cursor.getString(cursor
  98.                             .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY));

  99.                     String country = cursor.getString(cursor
  100.                             .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY));

  101.                     String region = cursor.getString(cursor
  102.                             .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION));

  103.                     String neighborhood = cursor.getString(cursor
  104.                             .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.NEIGHBORHOOD));

  105.                     String postcode = cursor.getString(cursor
  106.                             .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE));

  107.                     //判断通讯地址类型
  108.                     int structuredPostalIndexTypeIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE);
  109.                     int structuredPostalIndexType = cursor.getInt(structuredPostalIndexTypeIndex);
  110.                     switch (structuredPostalIndexType) {
  111.                         //家庭地址
  112.                         case ContactsContract.CommonDataKinds.StructuredPostal.TYPE_HOME:
  113.                             break;

  114.                         //单位地址
  115.                         case ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK:
  116.                             break;

  117.                         //其他
  118.                         case ContactsContract.CommonDataKinds.StructuredPostal.TYPE_OTHER:
  119.                             break;

  120.                         default:
  121.                             break;
  122.                     }

  123.                     break;

  124.                 default:
  125.                     break;
  126.             }

  127.             cursor.close();
  128.         }
  129.     }
  130. }
复制代码







回复

使用道具 举报

42

主题

192

帖子

1万

积分

论坛元老

三东省焚化部副主任

Rank: 8Rank: 8

积分
11227
QQ
沙发
发表于 2018-2-6 11:30:31 | 只看该作者
火山封装栗子,一对一教学  尽在 Q群:612219448
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-26 12:38 , Processed in 0.082980 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表