Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 联系方式返回两次_Java_Android_Android Contentprovider_Android Contacts - Fatal编程技术网

Java 联系方式返回两次

Java 联系方式返回两次,java,android,android-contentprovider,android-contacts,Java,Android,Android Contentprovider,Android Contacts,我正在尝试获取联系人详细信息,如姓名、电话号码、电子邮件和照片。附加到arraylist中的联系人 但对于同时拥有电话号码和电子邮件地址的联系人。我可以看到同一个联系人的名字两次,第一次是它的电子邮件地址,然后是它的电话号码,没有显示为一个联系人(应该是)。 有谁能帮我解决这个问题吗? TIA:) 参考号: public ArrayList getPhoneContact(String paramString,ArrayList paramarylist) 抛出自定义异常 { //游标local

我正在尝试获取联系人详细信息,如姓名、电话号码、电子邮件和照片。附加到arraylist中的联系人

但对于同时拥有电话号码和电子邮件地址的联系人。我可以看到同一个联系人的名字两次,第一次是它的电子邮件地址,然后是它的电话号码,没有显示为一个联系人(应该是)。 有谁能帮我解决这个问题吗? TIA:)

参考号:

public ArrayList getPhoneContact(String paramString,ArrayList paramarylist)
抛出自定义异常
{
//游标localCursor=null;
游标=空;
ArrayList localArrayList=新建ArrayList();
用户;
布尔标志;
字符串s1;
字符串s2;
字符串s6;
字符串s5;
字符串s3;
字符串s4;
int i;
int j;
int k;
int l;
int i1;
尝试
{
游标=getNamesAndPictures(paramArrayList);
if(cursor!=null&&cursor.moveToFirst()){
user=null;
i=cursor.getColumnIndex(“数据1”);
j=cursor.getColumnIndex(“联系人id”);
k=cursor.getColumnIndex(“display_name”);
l=cursor.getColumnIndex(“数据1”);
i1=cursor.getColumnIndex(“mimetype”);
s1=空;
做{
s2=游标.getString(j);
if(s2==null)
返回localArrayList;
//如果(s2等于(s1))
//返回localArrayList;
user=新用户();
s1=s2;
s3=cursor.getString(k);
user.setName(s3);
user.setContactId(s2);
user.setContactType(paramString);
s4=游标.getString(i1);
如果(s4!=null){
if(s4.equals(“vnd.android.cursor.item/phone_v2”)){
s6=游标.getString(i);
用户设置电话(s6);
}
else if(s4.equals(“vnd.android.cursor.item/email_v2”)){
s5=游标.getString(l);
用户设置电子邮件(s5);
}
}
localArrayList.add(用户);
}while(cursor.moveToNext());
}
}
catch(异常localException)
{
//本地异常
}
最后
{
//closeCursor(localCursor);
关闭游标(游标);
closeDatabase();
}
返回localArrayList;
}
以及:

专用光标getNamesAndPictures(ArrayList paramArrayList)
{
字符串str1=PrepareContactDSString(paramarryList);
ContentResolver localContentResolver=this.getAppContext().getContentResolver();
字符串[]arrayOfString={“数据1”、“联系人id”、“显示名称”、“数据id”、“数据1”、“mimetype”};
字符串str2=“display_name!=“null”和((mimetype='vnd.android.cursor.item/phone_v2'和is_primary!=-1)或(mimetype='vnd.android.cursor.item/email_v2'和is_primary!=-1)和联系人id不在(“+str1+”);
返回localContentResolver.query(android.provider.ContactsContract.Data.CONTENT\u URI,arrayOfString,str2,null,“显示\u名称整理本地化ASC”);
}

这是因为您要查询包含数据行的数据表,每一行包含有关联系人的某种信息,例如一行用于电子邮件,一行用于电话号码。 如果您只想获取联系人,则应查询contacts contract.contacts表,但随后您必须查询电子邮件和电话中的每个联系人

public ArrayList<User> getPhoneContact(String paramString, ArrayList<User> paramArrayList)
    throws CustomException
  {

        //Cursor localCursor = null;
        Cursor cursor = null;
        ArrayList localArrayList = new ArrayList();
        User user;
        boolean flag;
        String s1;
        String s2;
        String s6;
        String s5;
        String s3;
        String s4;
        int i;
        int j;
        int k;
        int l;
        int i1;
        try
        {

            cursor = getNamesAndPictures(paramArrayList);

            if(cursor != null && cursor.moveToFirst()){
                user = null;

                i = cursor.getColumnIndex("data1");
                j = cursor.getColumnIndex("contact_id");
                k = cursor.getColumnIndex("display_name");
                l = cursor.getColumnIndex("data1");
                i1 = cursor.getColumnIndex("mimetype");
                s1 = null;

                do{
                    s2 = cursor.getString(j);
                    if(s2 == null)
                        return localArrayList;
                    //if(s2.equals(s1))
                        //return localArrayList;
                    user = new User();

                    s1 = s2;
                    s3 = cursor.getString(k);
                    user.setName(s3);
                    user.setContactId(s2);
                    user.setContactType(paramString);
                    s4 = cursor.getString(i1);
                    if(s4 != null){
                        if(s4.equals("vnd.android.cursor.item/phone_v2")){
                            s6 = cursor.getString(i);
                            user.setPhone(s6);
                        }

                        else if(s4.equals("vnd.android.cursor.item/email_v2")){
                                s5 = cursor.getString(l);
                                user.setEmail(s5);

                            }
                    }

                    localArrayList.add(user);
                }while(cursor.moveToNext());

            }
        }
        catch (Exception localException)
        {
          //localException
        }

    finally
    {
      //closeCursor(localCursor);
      closeCursor(cursor);
      closeDatabase();
    }

        return localArrayList;
  }
private Cursor getNamesAndPictures(ArrayList<User> paramArrayList)
  {
    String str1 = prepareContactIdsString(paramArrayList);
    ContentResolver localContentResolver = this.getAppContext().getContentResolver();
    String[] arrayOfString = { "data1", "contact_id", "display_name", "_id", "data1", "mimetype" };
    String str2 = "display_name != 'null' AND ( (mimetype = 'vnd.android.cursor.item/phone_v2'  AND is_primary != -1 )  OR (mimetype = 'vnd.android.cursor.item/email_v2'  AND is_primary != -1 ) ) AND contact_id NOT IN ( " + str1 + ")";
    return localContentResolver.query(android.provider.ContactsContract.Data.CONTENT_URI, arrayOfString, str2, null, "display_name COLLATE LOCALIZED ASC");
  }