Java Quickblox请求生成器[或]

Java Quickblox请求生成器[或],java,android,arraylist,quickblox,custom-object,Java,Android,Arraylist,Quickblox,Custom Object,“phoneList”是字符串的数组列表。 现在,在我的设备上,该代码运行良好,但在三星设备上,我遇到了崩溃: “java.lang.IllegalArgumentException:索引147处的查询中存在非法字符:…” 现在我肯定知道是arrayList造成了这个问题,因为如果我把电话列表改为“00000”,“09878889”-就可以了。 怎么办? 谢谢 编辑: ArrayList al=new ArrayList(); HashSet hs=新的HashSet(); hs.addAll(

“phoneList”是字符串的数组列表。 现在,在我的设备上,该代码运行良好,但在三星设备上,我遇到了崩溃: “java.lang.IllegalArgumentException:索引147处的查询中存在非法字符:…”

现在我肯定知道是arrayList造成了这个问题,因为如果我把电话列表改为“00000”,“09878889”-就可以了。 怎么办? 谢谢

编辑:

ArrayList al=new ArrayList();
HashSet hs=新的HashSet();
hs.addAll(电话列表);
al.clear();
艾德尔(hs);
字符串[]arrString=新字符串[al.size()+1];
对于(int j=0;j

这是我的解决方案,但我发现如果“arrString”大于600+它就不起作用了,这是为什么?

让我解释一下操作符的工作原理:

1) 例如,您有名称字段

要获取名为Alex或Garry的所有记录,请使用下一个查询:

ArrayList<String> al = new ArrayList<String>();
            HashSet<String> hs = new HashSet<String>();
            hs.addAll(phoneList);
            al.clear();
            al.addAll(hs);

            String[]arrString = new String [al.size()+1];
            for (int j = 0; j < al.size(); j++) {
                String str = al.get(j).toString();
                arrString[j+1]= str;
            }
            arrString[0]= myPhone;
            requestBuilder.or("userPhone",arrString);
requestBuilder.or("name", "Alex", "Garry");
2) 例如,您有姓名字段和年龄字段

要获取名为Alex或年龄为22岁的所有记录,请使用下一个查询:

ArrayList<String> al = new ArrayList<String>();
            HashSet<String> hs = new HashSet<String>();
            hs.addAll(phoneList);
            al.clear();
            al.addAll(hs);

            String[]arrString = new String [al.size()+1];
            for (int j = 0; j < al.size(); j++) {
                String str = al.get(j).toString();
                arrString[j+1]= str;
            }
            arrString[0]= myPhone;
            requestBuilder.or("userPhone",arrString);
requestBuilder.or("name", "Alex", "Garry");

尝试这样的事情

Igor,请帮助我…谢谢,我理解,但如果我想:requestBuilder.or(“姓名”、“亚历克斯”、“加里”、“利昂”、“尤汉”、“诺拉”…);还有更多的名字?我把所有的名字都放在arraylist中,就像我说的,这在我的设备上是可行的,但在其他设备上,我需要把所有的名字都放在字符串数组中,但如果字符串数组小于600+,这是可行的。。。