Android中获取单个联系人的详细信息

许久没有用过通讯,虽然知道原理但是却忘记怎么写了,在此做个记录以备不时之需

package com.example.chauncey.searchbar;

import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.provider.ContactsContract;

/**
 * Created by chauncey on 2017/4/26.
 */

public class ContactUtil {

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

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

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

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

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

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

                    switch (phoneType) {
                        //移动手机
                        case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE:
                            String mobile = number;
                            break;
                        //家用座机
                        case ContactsContract.CommonDataKinds.Phone.TYPE_HOME:
                            String phone = number;
                            break;
                        //家用传真
                        case ContactsContract.CommonDataKinds.Phone.TYPE_FAX_HOME:
                            String faxHome = number;
                            break;

                        default:
                            break;

                        //一共有20种类型
                        // public static final int TYPE_HOME = 1;
                        // public static final int TYPE_MOBILE = 2;
                        // public static final int TYPE_WORK = 3;
                        // public static final int TYPE_FAX_WORK = 4;
                        // public static final int TYPE_FAX_HOME = 5;
                        // public static final int TYPE_PAGER = 6;
                        // public static final int TYPE_OTHER = 7;
                        // public static final int TYPE_CALLBACK = 8;
                        // public static final int TYPE_CAR = 9;
                        // public static final int TYPE_COMPANY_MAIN = 10;
                        // public static final int TYPE_ISDN = 11;
                        // public static final int TYPE_MAIN = 12;
                        // public static final int TYPE_OTHER_FAX = 13;
                        // public static final int TYPE_RADIO = 14;
                        // public static final int TYPE_TELEX = 15;
                        // public static final int TYPE_TTY_TDD = 16;
                        // public static final int TYPE_WORK_MOBILE = 17;
                        // public static final int TYPE_WORK_PAGER = 18;
                        // public static final int TYPE_ASSISTANT = 19;
                        // public static final int TYPE_MMS = 20;
                    }

                    break;

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

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

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

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

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

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

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

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

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

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

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

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

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

                        default:
                            break;
                    }

                    break;

                default:
                    break;
            }

            cursor.close();
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
获取单个商品的详细信息,可以使用以下步骤: 1. 在servlet获取商品的ID参数,可以从请求的URL获取或从请求参数获取。 2. 使用商品ID查询数据库,获取商品的详细信息。这些详细信息可能包括商品名称、描述、价格、图片等。 3. 将商品详细信息存储在request对象,以便在JSP页面显示。 4. 转发请求到JSP页面,以显示商品详细信息。 下面是一个简单的例子: ```java @WebServlet("/product") public class ProductServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取商品ID参数 int productId = Integer.parseInt(request.getParameter("id")); // 查询数据库获取商品详细信息 Product product = getProductById(productId); // 将商品详细信息存储在request对象 request.setAttribute("product", product); // 转发请求到JSP页面 RequestDispatcher dispatcher = request.getRequestDispatcher("/product.jsp"); dispatcher.forward(request, response); } // 通过商品ID查询数据库获取商品详细信息 private Product getProductById(int productId) { // TODO: 实现查询数据库的逻辑 return null; } } ``` 在JSP页面,可以使用EL表达式(`${product.name}`)来显示商品的详细信息: ```jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>商品详情</title> </head> <body> <h1>${product.name}</h1> <p>${product.description}</p> <p>价格:${product.price}</p> <img src="${product.image}" alt="${product.name}"> </body> </html> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值