summerpoppy 2016-11-04 08:21 采纳率: 0%
浏览 886

pull解析总是异常,不知哪里错了

/*
 * 定义短信还原的接口
 */
public interface RestoreSmsCallback{
    public void beforeSmsRestore(int size);
    public void onSmsRestore(int process);
}

/*
 * 短信的还原
 */

public static boolean restoreSms(Context context, RestoreSmsCallback callback) throws XmlPullParserException, IOException{
String path;
int process = 0;//获取进度条的开始点
//判断备份短信是否存在,读取SD卡的文件
if(Environment.getExternalStorageDirectory().equals(Environment.MEDIA_MOUNTED)){
//获取文件的路径
File file = new File(Environment.getExternalStorageDirectory(), "backup.xml");
//获取Pull解析器
XmlPullParser pullParser = Xml.newPullParser();
FileInputStream fis = new FileInputStream(file);
//初始化pull解析器
pullParser.setInput(fis, "utf-8");
//设置事件的标签节点
int eventType = pullParser.getEventType();
//获取内容提供者
ContentResolver resolver = context.getContentResolver();
ContentValues values = new ContentValues();
while(eventType!=XmlPullParser.END_DOCUMENT){
switch (eventType) {
case XmlPullParser.START_DOCUMENT://判断当前的事件是否是文档的开始
if(pullParser.getName().equals("smss")){
//调用接口的方法,获取属性的多少
String size = pullParser.getAttributeValue(0);
callback.beforeSmsRestore(Integer.valueOf(size));
}
break;
case XmlPullParser.START_TAG://开始的标签
if(pullParser.getName().equals("sms")){//判断起点标签
if(pullParser.getName().equals("address")){
values.put("address",pullParser.nextText());
resolver.insert(Uri.parse("content://sms/"), values);
}else if(pullParser.getName().equals("date")){
values.put("date",pullParser.nextText());
resolver.insert(Uri.parse("content://sms/"), values);
}else if(pullParser.getName().equals("date")){
values.put("type",pullParser.nextText());
resolver.insert(Uri.parse("content://sms/"), values);
}else if(pullParser.getName().equals("body")){
String decryptText;
try {
//这是解密短信的部分
decryptText = Crypto.decrypt("456", pullParser.nextText());
values.put("body",decryptText);
} catch (Exception e) {
e.printStackTrace();
values.put("body","短信错误");
}
resolver.insert(Uri.parse("content://sms/"), values);
}
}
break;
case XmlPullParser.END_TAG://结束的标签
if(pullParser.getName().equals("sms")){
//还原每条短信
process++;
callback.onSmsRestore(process);
}
}
eventType = pullParser.next();
}
return true;
}else{
throw new XmlPullParserException("xmlpull解析异常");
}
}

  • 写回答

1条回答 默认 最新

  • summerpoppy 2016-11-04 08:26
    关注

    这是要解析的xml文件图片说明

    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大