android消息发送字符串,Android aSmack-如何对文件发送进行自定义消息...
以下是使用aSmack进行自定义扩展的完整解决方案:
首先我必须创建PacketExtension:
public class ExtensionFile implements PacketExtension {
public static final String ELEMENT = "file";
public static final String NAMESPACE = "file:namespace";
private String fileURL;
private String fileSize;
@Override
public String getElementName() {
return ELEMENT;
}
@Override
public String getNamespace() {
return NAMESPACE;
}
@Override
public String toXML() {
StringBuilder builder = new StringBuilder();
builder.append("
+ "\">");
if (fileURL != null) {
builder.append("").append(fileURL).append("");
}
if (fileSize != null) {
builder.append("").append(fileSize).append("");
}
builder.append("" + getElementName() + ">");
return builder.toString();
}
public void setFileURL(String fileURL) {
this.fileURL = fileURL;
}
public String getFileURL() {
return fileURL;
}
public void setFileSize(String fileSize) {
this.fileSize = fileSize;
}
public String getFileSize() {
return fileSize;
}
}
然后提供程序解析此数据包:
public class ExtensionProviderFile implements PacketExtensionProvider {
@Override
public PacketExtension parseExtension(XmlPullParser parser)
throws Exception {
ExtensionFile fileExt = new ExtensionFile();
int eventType = parser.next();
while (eventType == XmlPullParser.START_TAG) {
String name = parser.getName();
switch (parser.getEventType()) {
case XmlPullParser.START_TAG:
if (name.equals("fileURL")) {
fileExt.setFileURL(parser.nextText());
} else if (name.equals("fileSize")) {
fileExt.setFileSize(parser.nextText());
}
}
eventType = parser.next();
}
return fileExt;
}
}
发送带有文件扩展名的消息:
private void sendMessage(String recipient, String message){
Message msg = new Message(recipient,Message.Type.chat);
msg.setBody(message);
//Create extension and set values
ExtensionFile fileExt = new ExtensionFile();
fileExt.setFileURL("http://www.example.com/upload_files/"+ abc.jpg);
fileExt.setFileSize(fileSize);
//add extension to message
msg.addExtension(fileExt);
//send message
xmppConnection.sendPacket(msg);
}
要接收此消息,请实现PacketListener并覆盖processPacket():
@Override
public void processPacket(Packet packet) {
Message message = (Message) packet;
//Get extension from message
ExtensionFile extFile = (ExtensionFile) message
.getExtension("file:namespace");
if (extFile != null) {
//Get values from extension
String filePath = extFile.getFileURL();
String fileSize = extFile.getFileSize();
System.out.println("Message :" + message.getBody() + " File url:" + filePath + " File size:" + fileSize);
}
}
并在连接到xmpp服务器之前添加此提供:
ProviderManager.getInstance().addExtensionProvider(
ExtensionFile.ELEMENT, ExtensionFile.NAMESPACE,
new ExtensionProviderFile());
android消息发送字符串,Android aSmack-如何对文件发送进行自定义消息...相关推荐
- android消息发送字符串,android - 从Android客户端通过HTTP在HL7消息中发送base64字符串时遇到错误 - 堆栈内存溢出...
我正在android客户端(API 17)中使用HL7消息,并使用Hapi库生成和解析HL7消息.当我传输小的字符串值时,该消息工作正常. 但是我必须通过Http将图像发送到HL7服务器,为此,我正在 ...
- android消息队列模型,Android 消息队列机制
在非UI线程使用Handler进行线程通信时,一般都需要进行3个步骤: 创建Looper Looper.prepar() 创建Handler 启动消息循环Looper.loop() 通过这3步,基本就 ...
- android 语音发送功能,Android仿微信、录制音频并发送功能
MyRecorder(仿微信,录制音频并发送功能) ①布局实现(activity_main.xml)布局采用线性布局,上面使用的一个ListView,下面使用的是一个自定义的Button(会在下面进行 ...
- android 消息循环滚动条,Android ViewPager实现循环滚动
流量预警 内含三张4M+的GIF图片,流量慎入 转载请注明出处 以下图片来源于https://pixabay.com/ gif!图片外链服务由贴图库提供 画廊效果的部分来自博客园博主@阿呆哥哥的教程 ...
- android 上传字符串,Android中发送Http请求(包括文件上传、servlet接收)的实例代码...
/** * 通过拼接的方式构造请求内容,实现参数传输以及文件传输 * @param actionUrl * @param params * @param files * @return * @thro ...
- android 表示空字符串,Android Logcat获取空字符串时非常奇怪的行为
这是一个有趣的问题.我只是在LogRabbit中尝试过,并且能够看到相同的结果. 我快速浏览了android源代码,看到Log.W(-)最终以本机代码显示并在logd_write.c中得到处理 这基本 ...
- android 实现发送彩信,android 实现发送彩信方法 (MMS)
最近有个突然有个想法,不去调用系统界面发送彩信功能.做过发送短信功能的同学可能第一反应是这样: 不使用 StartActivity,像发短信那样,调用一个类似于发短信的方法 SmsManager sm ...
- android emoji 转字符串,android Emoji的处理
1.输入监听emoji,然后拦截掉 /** * 将系统表情转化为字符串 * * @param s * @return */ public static boolean havaEmoji(String ...
- android获取未知字符串,android – 未知的URL内容:// downloads / my_dow...
我正在使用Download Manger下载一些多媒体文件并对其进行分类.我也在使用Crashlytics,这是一个错误,我经常在不同的设备和Android版本上得到它.我正在寻找你的解决方案/建议! ...
- android 去空字符串,android – TextUtils.isEmpty()方法为空字符串返回false
对于空字符串,它应该返回true. 从TextUtils的源代码: public static boolean isEmpty(@Nullable CharSequence str) { if (st ...
最新文章
- Fabric环境搭建
- debian上安装docker ce
- Hadoop 2.0集群配置详细教程
- Pull Request的正确打开方式(如何在GitHub上贡献开源项目)
- Css学习总结(5)——CSS常见布局方式
- toString()和valueOf()重写的区别
- 极简算法史---序 前言
- 利用 TFLearn 快速搭建经典深度学习模型
- 第一次申请去美国面签,需要注意哪些事项提高成功率?
- 脱库和删库的实践及解决方案
- 管理员界面html,12套超酷的后台管理员界面网站模板
- java 磁力下载工具_它可能是现在最好用的磁力下载工具
- 淘宝店铺老店标识怎么显示 怎么淘宝老店标识申请
- C# 代码编辑器实现-概述
- 威廉.大内的Z理论(1981)--轉載
- matlab之计算排列组合
- Pygame mixer 模块
- 网页打印中,A4纸对应的像素值的设定和换算
- windows下域名解析及修改hosts文件不起作用的问题解决
- 运维工程师分享7道经典面试题,看完轻松拿Offer