2015-02-17 1 views
7

Я пытался получить записи в реестре, используя smack 4.1 beta 2 в android.получить онлайн-пользователей (записи в реестре), используя smack 4.1 в android

https://github.com/igniterealtime/Smack/wiki/Smack-4.1-Readme-and-UpgradeGuide Цитата из выше ссылки ..

«Учетная теперь следует шаблону Manager (использование Roster.instanceFor для получения экземпляра, не более XMPPConnection.getRoster)»

Прежде всего я не являюсь способный получить объект «Roster», библиотеки, которые я импортировал, могут не иметь этого пакета, или я пропустил любой lib здесь?

Я использую все библиотеки, упомянутые в ссылке выше.

Может ли кто-нибудь помочь мне получить записи реестра с помощью smack 4.1?

Благодаря

+0

Я думаю, что ссылка является неправильным –

+0

Это официальная ссылка – Hitendra

ответ

22

Это решение шаг за шагом, который завершается (надеюсь), отвечая на ваш вопрос. Вы должны обратить особое внимание на импорт 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); 
+0

список часть работала хорошо. спасибо –

+0

Я не могу найти реестры с присутствием. каждый раз, когда я получаю нулевой статус, а также недоступен в типе присутствия. – ErShani

+0

Я получаю 0 записей после успешного входа в систему. – Neo

0

Вы можете использовать Smack-xxx-4.1.0-rc5, как показано ниже:

smack-android-4.1.0-rc5.jar 
smack-android-extensions-4.1.0-rc5.jar 
smack-core-4.1.0-rc5.jar 
smack-experimental-4.1.0-rc5.jar 
smack-extensions-4.1.0-rc5.jar 
smack-im-4.1.0-rc5.jar 
smack-resolver-minidns-4.1.0-rc5.jar 
smack-sasl-provided-4.1.0-rc5.jar 
smack-tcp-4.1.0-rc5.jar 
+0

почему rc-5? rc-1 не работает? –

Смежные вопросы