1

我正在编写一种将电话簿联系人添加到朋友列表的方法,如果服务器中存在我的一个联系人,则应用程序会自动将他添加到我的应用程序列表朋友中。应用程序工作正常,但这种方法永远不会停止,那么我该怎么做呢?我想搜索我的联系人并比较服务器上的每个联系人(这已经完成)然后如果服务器中存在联系人将他添加到联系人列表中(这也已经完成)在任务完成时显示联系人(这是我的问题,任务永远不会结束,总是在重新加载)

谁能帮我?

这是我的方法,效果很好

public void newContactList() {


Thread dt = new Thread(new Runnable() {@Override
    public void run() {
        try {


            Cursor numeros = singleton.getContext().getContentResolver().query(
            ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,
            null, null);


            while (numeros.moveToNext()) {

                final String phoneNumber = numeros.getString(numeros.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));



                String phone = phoneNumber.toString();
                String temp = phone.trim();

                temp = phone.replaceAll(" ", "");
                String tempx = temp.replaceAll("\\((.+?)\\)", "$1");
                String tempy = tempx.replaceAll("-", "");
                //String tem23 = tempy.replaceAll("+", "");
                final String temp2 = tempy;

                final String jid = temp2.toString();
                ejemplo.version1.ucity.entities.Roster r;
                String HOSTT = new String(data4, "UTF-8");
                String SERVICEE = new String(data4, "UTF-8");
                int PORTT = 5222;

                configure(ProviderManager.getInstance());
                ConnectionConfiguration connConfig = new ConnectionConfiguration(
                HOSTT, PORTT, SERVICEE);
                connConfig.setSASLAuthenticationEnabled(false);
                XMPPConnection connection = new XMPPConnection(connConfig);

                SharedPreferences uname = singleton.getContext().getSharedPreferences("username", singleton.getContext().MODE_PRIVATE);
                String jis = uname.getString("username", "");
                String text = new String(data2, "UTF-8");
                String jidname = jis + text;
                String uname1 = jidname.replaceAll(text, "");
                SharedPreferences passconfir = singleton.getContext().getSharedPreferences("password", singleton.getContext().MODE_PRIVATE);
                String passconf = passconfir.getString("password", "");

                connection.connect();

                connection.login(uname1, passconf);
                Roster roster = connection.getRoster();
                roster.getEntry(uname1);
                Collection < RosterEntry > entries = roster.getEntries();
                String text2 = new String(data, "UTF-8");
                String searString2 = text2;

                roster.createEntry(searString2, null, null);
                if (roster.contains(jid)) {
                    break;
                } else {
                    UserSearchManager search = new UserSearchManager(connection);

                    Form searchForm = search.getSearchForm("search." + connection.getServiceName());

                    Form answerForm = searchForm.createAnswerForm();
                    answerForm.setAnswer("Username", true);

                    if (jid.toString().length() >= 10) {
                        answerForm.setAnswer("search", jid);

                        org.jivesoftware.smackx.ReportedData data = search.getSearchResults(answerForm, "search." + connection.getServiceName());

                        if (data.getRows() != null) {
                            Iterator < ReportedData.Row > it = data.getRows();
                            while (it.hasNext()) {
                                ReportedData.Row row = it.next();
                                Iterator iterator = row.getValues("jid");
                                Iterator iterator1 = row.getValues("name");
                                if (iterator.hasNext()) {
                                    String value = iterator.next().toString();
                                    //   
                                    String valuename = iterator1.next().toString();
                                    String value2 = value;

                                    String value3 = valuename;

                                    roster.createEntry(value2, value3, null);



                                }

                            }

                        }

                    } else {

                    }
                };
            }

            numeros.close();
        } catch (Exception e) {

我的问题是我怎么能在Back上完成这个任务,我试着做

protected String doInBackground(Void...arg0) {

        newContactList();

        return 
    }
4

0 回答 0