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文件图片说明

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器