電話帳の連絡先を友達リストに追加する方法を書いています。連絡先の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) {
私の質問は、このタスクを onBack でどのように実行できるかです。
protected String doInBackground(Void...arg0) {
newContactList();
return
}