Это решение шаг за шагом, который завершается (надеюсь), отвечая на ваш вопрос. Вы должны обратить особое внимание на импорт Java в STEP 2, и метод Roster.reloadAndWait() в Шаге 4.
ПРИМЕЧАНИЕ: Рекомендуется Смак код будет выполняться с использованием AsyncTask.
Шаг 1: Включите следующие зависимости. Для пользователей Android Studio, это находится в build.gradle (Module: приложение)
dependencies {
compile "org.igniterealtime.smack:smack-android:4.1.0-rc1"
compile "org.igniterealtime.smack:smack-android-extensions:4.1.0-rc1"
compile "org.igniterealtime.smack:smack-tcp:4.1.0-rc1"
}
обеспечения Также программа имеет соответствующие разрешения для TCP деятельности. Для пользователей Android Studio, вы можете добавить это к вашему AndroidManifest.xml файл:
<uses-permission android:name="android.permission.INTERNET"/>
Шаг 2: Импорт следующий
import org.jivesoftware.smack.roster.*; /*you may have been missing this*/
import org.jivesoftware.smack.*;
import org.jivesoftware.smack.tcp.*;
import java.util.Collection; /*optional*/
Шаг 3: Подключение к серверу
/*Example solution. The exact settings would have to be adjusted outside of practice*/
XMPPTCPConnectionConfiguration conf = XMPPTCPConnectionConfiguration
.builder()
.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
.setServiceName("192.168.2.14")
.setHost("192.168.2.14")
.setPort(5222)
.setCompressionEnabled(false).build();
XMPPTCPConnection connection = new XMPPTCPConnection(conf);
try {
connection.connect();
connection.login("john","123");
...
Шаг 4: Получить список
...
Roster roster = Roster.getInstanceFor(connection);
if (!roster.isLoaded())
roster.reloadAndWait();
Collection <RosterEntry> entries = roster.getEntries();
for (RosterEntry entry : entries)
System.out.println("Here: " + entry);
Я думаю, что ссылка является неправильным –
Это официальная ссылка – Hitendra