Do tego trzeba edytować 2 Klasy Smack 4.1
- Stanza w klasie (org.jivesoftware.smack.packet)
- PacketParserUtils w klasie (org.jivesoftware .smack.util)
1. Stanza klasa
Definiowanie atrybutu niestandardowego (nick)
private String nick = null;
Definiowanie Getter i Setery
public String getNick() {
return this.nick;
}
public void setNick(String paramString) {
this.nick = paramString;
}
Edit Stanza Konstruktor
protected Stanza(Stanza p) {
//add this line
nick = p.getNick();
}
Edycja addCommonAttributes Sposób
protected void addCommonAttributes(XmlStringBuilder xml) {
//add this line
if(getNick()!= null)
xml.optAttribute("nick", getNick());
}
2.PacketParserUtils klasa
Edit parseMessage metoda
public static Message parseMessage(XmlPullParser parser)
throws XmlPullParserException, IOException, SmackException {
//add this line
message.setNick(parser.getAttributeValue("", "nick"));
}
Teraz można po prostu ustawić nick i wysłać wiadomość następująco
Message message = new Message();
message.setType(Message.Type.chat);
message.setStanzaId("123");
message.setTo(number);
message.setNick("SHAYAN");
try {
connection.sendStanza(message);
} catch (NotConnectedException e) {
}
Cześć shanrais !, sklonowałem Smacka z githubu i zredagowałem dwie klasy. Ale nie powiedziałeś, jak wdrożyć klaps i tworzyć słoiki ponownie na Androida z prawej? –
Zamiast tworzyć słoiki, to, co zrobiłem, zawiera kod źródłowy tego słoika, który edytowałem w moim projekcie. – shanraisshan
czy możesz powiedzieć, które foldery wymagają kopii? Mam wiele folderów w projekcie https://github.com/igniterealtime/Smack na github, nie wiem, które foldery wymagają skopiowania do mojego projektu. Następujące słoiki zadeklarowane w mojej aplikacji gradle: skompiluj "org.igniterealtime.smack: smack-android-extensions: 4.1.1" skompiluj plik "org.igniterealtime.smack: smack-experimental: 4.1.1" skompiluj plik "org.igniterealtime. smack: smack-tcp: 4.1.1 ' –