android-从联系人中提取email异常

问题描述

从联系人中提取email异常

从一个联系人信息中提取Email

我用了下面的代码:

    Cursor c1;
    c1 = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, ContactsContract.Contacts.DISPLAY_NAME);
    if(c1==null)
return;
            if(c1.getCount() > 0)
    {
            while(c1.moveToNext())
            {
                String id = c1.getString(c1.getColumnIndex(Contacts._ID));
                                            if(id==null)
                    continue;
                                            Cursor email_crsr = getContentResolver().query(CommonDataKinds.Email.CONTENT_URI, null, CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id}, null);
                if(email_crsr!=null)
                      email = phone_crsr.getString(phone_crsr.getColumnIndex(CommonDataKinds.Email.DATA));

 }
}

然后报出如下异常: 04-09 10:38:59.487: E/AndroidRuntime(8150): Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 4

解决方案

试试:

public ArrayList<String> getNameEmailDetails(){
    ArrayList<String> names = new ArrayList<String>();
    ContentResolver cr = getContentResolver();
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
    if (cur.getCount() > 0) {
        while (cur.moveToNext()) {
            String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
            Cursor cur1 = cr.query(
                    ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,
                    ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
                            new String[]{id}, null);
            while (cur1.moveToNext()) {
                //to get the contact names
                String name=cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
//                    Log.e("Name :", name);
                    String email = cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
//                    Log.e("Email", email);
                    if(email!=null){
                        names.add(email);
                    }
                }
                cur1.close();
            }
        }
        return names;
    }

解决方案二:

phone_crsr 这个在哪初始化和赋值的,写错了吧,同时也没有移动cursor的动作。
时间: 2025-01-24 13:20:44

android-从联系人中提取email异常的相关文章

android sdk 4.2获取apn异常,难道不能获取了

问题描述 android sdk 4.2获取apn异常,难道不能获取了 android sdk 4.2使用apn异常,难道谷歌不让获取了?有方法解决吗 解决方案 没找到解决办法,只好取消对apn的信息读取了 解决方案二: Resolve: Phone must be rooted open and edit file /system/build.prop look for a line: telephony.rilV7NeedCDMALTEPhone set = false, or delete

android上用openCV提取头发范围

问题描述 android上用openCV提取头发范围 openCV 如何能提取出头发范围,如下图 网上资料很少,只有些许少量的思路---HSV提取,代码没找到.希望做过的神们提供点东西~~,我只是想准确获取头发颜色. 解决方案 这本书不错,我也是刚开始看.只能帮到这里了.http://download.csdn.net/download/ngc_j/7613311 解决方案二: 多谢........

电子邮件-java发Email 异常 连接失败

问题描述 java发Email 异常 连接失败 代码大致如下 //发邮件 Properties pros = new Properties(); pros.load(this.getClass().getClassLoader().getResourceAsStream("email_template.properties")); String host = pros.getProperty("host");//获取主机 String uname = pros.ge

Android 中Crash时如何获取异常信息详解及实例

Android 中Crash时如何获取异常信息详解 前言: 大家都知道,Android应用不可避免的会发生crash,无论你的程序写的多完美,总是无法完全避免crash的发生,可能是由于Android系统底层的bug,也可能是由于不充分的机型适配或者是糟糕的网络状况.当crash发生时,系统会kill掉你的程序,表现就是闪退或者程序已停止运行,这对用户来说是很不友好的,也是开发者所不愿意看到的,更糟糕的是,当用户发生了crash,开发者却无法得知程序为何crash,即便你想去解决这个crash,

Android 后台发送邮件示例 (收集应用异常信息+Demo代码)

今天介绍个更简单的方法,我们把异常信息收集后,通过后台发送邮件方法,把相关异常信息发送到我们指定的邮箱里面   上一次说了如何收集我们已经发布的应用程序的错误信息,方便我们调试完善程序.上次说的收集方法主要是把收集的信息通过Http的post请求把相 关的异常信息变成请求参数发送到服务器.这个对做过web开发的人来说,服务端处理是很简单.不过对很多没做个web的人来说却是麻烦事.今天介绍个更简 单的方法,我们把异常信息收集后,通过后台发送邮件方法,把相关异常信息发送到我们指定的邮箱里面. 这篇文

android studio 单发红包数组下标越界异常看不到log

问题描述 描述: 我要继承环信的红包功能,努力了一天,好吧实现了调出红包界面,提示我扣款成功(京东支付).我在原来的web页面返回到聊天窗口.还没看到就蹦了.异常没拿到.然后我再次进入聊天窗口(对象环信小助手).我点输入框.就有了下面的异常.(还有个问题看完这个看下面的) 05-12 16:29:47.072 23811-23811/com.easemob.chatuidemo D/AndroidRuntime: Shutting down VM05-12 16:29:47.111 23811-

Android 后台发送邮件示例 (收集应用异常信息+Demo代码)_Android

上一次说了如何收集我们已经发布的应用程序的错误信息,方便我们调试完善程序.上次说的收集方法主要是把收集的信息通过Http的post请求把相关的异常信息变成请求参数发送到服务器.这个对做过web开发的人来说,服务端处理是很简单.不过对很多没做个web的人来说却是麻烦事.今天介绍个更简单的方法,我们把异常信息收集后,通过后台发送邮件方法,把相关异常信息发送到我们指定的邮箱里面. 这篇文章是实用性文章,不会涉及太多理论分析.主要是让大家看了以后知道怎么在自己的应用里面添加这个功能. 1.第三方库这次发

解决Android平台中应用程序OOM异常的方法_Android

在Android平台上面,应用程序OOM异常永远都是值得关注的问题.通常这一块也是程序这中的重点之一.这下我就如何解决OOM作一点简单的介绍. 首先,OOM就是内存溢出,即Out Of Memory.也就是说内存占有量超过了VM所分配的最大. 怎么解决OOM,通常OOM都发生在需要用到大量内存的情况下(创建或解析Bitmap,分配特大的数组等),在这样的一种情况下,就可能出现OOM,据我现在了解到,多数OOM都是因为Bitmap太大.所以,这里我就专门针对如何解决Bitmap的OOM.其实最核发

Android开发使用UncaughtExceptionHandler捕获全局异常_Android

在集成了统计SDK(友盟统计,百度统计等)之后,有一个非常有利于测试的功能:错误分析!此功能能够将程序在运行中碰到的崩溃(runtimeException)问题反馈到服务器,帮助开发者改善产品,多适配机器. 然而在公司Android开发中不集成这些SDK,那应该怎么实现这样的功能呢?下面让我们来看下如何使用UncaughtExceptionHandler来捕获异常. 首先实现创建一个类,实现UncaughtExceptionHandler接口.代码如下: 复制代码 代码如下: public cl