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