各种手机助手里面都包含了短信备份这一项。短信的本分主要包含四项:内容body、事件date、方式type、号码address。

短信备份~一。使用一种很笨的方式来保存短信到xml文件中,而且保存在外部存储。后续会有:短信备份~二(xml序列化器);短信备份~三(内容提供者获取短信xml备份);短信备份~四(json方式备份数据库短信)。备份的方式越来越高效,比较不同存储方式。

很显然,初次介绍短信备份,以一种简单笨拙的方式,且不涉及内容提供者,虚拟10条短信。

短信的保存,要以对象的形式保存。因此创建一个javabean类:

package com.itydl.createxml.domain;

public class Message {

private String body;

private String date;

private String address;

private String type;

public String getBody() {

return body;

}

public void setBody(String body) {

this.body = body;

}

public String getDate() {

return date;

}

public void setDate(String date) {

this.date = date;

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

public String getType() {

return type;

}

public void setType(String type) {

this.type = type;

}

public Message(String body, String date, String address, String type) {

super();

this.body = body;

this.date = date;

this.address = address;

this.type = type;

}

}

接着在mainactivity中代码:

package com.itydl.createxml;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.util.ArrayList;

import java.util.List;

import com.itheima.createxml.domain.Message;

import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;

import android.view.View;

public class MainActivity extends Activity {

List smsList;//存取一条短信得内容的对象

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//虚拟10条短信

smsList = new ArrayList();

for(int i = 0; i < 10; i++){

Message sms = new Message("小志好棒" + i, System.currentTimeMillis() + "", "138"+i+i, "1");

smsList.add(sms);//并把短信存储到集合里面去。

}

}

//点击按钮触发备份,一IO流方式存储

public void click(View v){

//在内存中把xml备份短信的格式拼接出来

StringBuffer sb = new StringBuffer();

sb.append("<?xml version='1.0' encoding='utf-8' standalone='yes' ?>");

sb.append("");

for (Message sms : smsList) {

sb.append("");

sb.append("

");

sb.append(sms.getBody());//如果发短信的人吃饱了没事干,在短信里加上了

,这样就会报错了。

sb.append("");

sb.append("");

sb.append(sms.getDate());

sb.append("");

sb.append("");

sb.append(sms.getType());

sb.append("");

sb.append("

");

sb.append(sms.getAddress());

sb.append("

");

sb.append("");

}

sb.append("");

File file = new File("sdcard/sms.xml");//把短信这种性质的信息,保存在外部存储空间里

try {

FileOutputStream fos = new FileOutputStream(file);

fos.write(sb.toString().getBytes());

fos.close();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

因为涉及对sd卡的写操作,因此在清单文件中记得加入权限:

运行程序,点击短信备份按钮。在sd卡导出xml文件,用浏览器打开。即就是短信所有信息的备份。

但是,这种方式显得很笨拙,而且当用户短信信息里面有一个

标签的时候,上一次的就没有尾节点与之匹配。就会报错,浏览器没法解析这个文件。这种方式也不会使用,知识提供一种思路。后续先介绍xml序列化器生成xml文件,就不会遇到这种问题。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java 短信备份宝_Android实战教程第八篇之短信备份相关推荐

  1. 零基础入门Redis实战教程(基础篇)

    Redis系列已更新进阶篇,详情请见:Redis十分钟进阶实战教程(进阶篇) 文章目录 一.NoSQL 二.Redis (一)什么是Redis (二)基础的知识 (三)五大数据类型 (四)三种特殊数据 ...

  2. ffmpeg实战教程(八)Android平台下AVfilter 实现水印,滤镜等特效功能

    ffmpeg实战教程(八)Android平台下AVfilter 实现水印,滤镜等特效功能 ffmpeg实战教程(七)Android CMake avi解码后SurfaceView显示 本篇我们在此基础 ...

  3. android远程打电话,Android打电话功能 Android实战教程第三篇之简单实现拨打电话功能...

    想了解Android实战教程第三篇之简单实现拨打电话功能的相关内容吗,杨道龙在本文为您仔细讲解Android打电话功能的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Android拨打电话 ...

  4. 机器学习实战教程汇总(十三篇)

    机器学习实战教程(13篇) 这些网址非常适合想学习机器学习,却苦于没有项目(尤其缺少数据)的人.无意中看到,给自己做一个记录. 机器学习实战教程(一):K-近邻算法(史诗级干货长文)https://c ...

  5. 微信小程序教学第二章(含视频):小程序中级实战教程之预备篇 - 提取util公用方法 |基于最新版1.0开发者工具

    iKcamp官网:http://www.ikcamp.com 访问官网更快阅读全部免费分享课程:<iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享>. ...

  6. 【NAS备份】摆脱丢数据的噩梦,群晖备份硬核实战教程分享

    前言 大家好,我是村雨Mura,本期来聊一聊我是如何用 NAS 轻松.完整地备份自己数据的. 首先,硬件再好不如备份 即便从小的线材到硬盘的质量都用最好的,也很难保证不丢数据,宇宙射线.硬盘不可逆衰减 ...

  7. 微信小程序教学第二章(含视频):小程序中级实战教程之预备篇 - 封装网络请求及 mock 数据...

    § 封装网络请求及 mock 数据 本文配套视频地址: v.qq.com/x/page/i055- 开始前请把 ch2-3 分支中的 code/ 目录导入微信开发工具 上一节中,我们对 index.j ...

  8. 机器学习实战教程(八):支持向量机原理篇

    一.前言 本篇文章参考了诸多大牛的文章写成的,深入浅出,通俗易懂.对于什么是SVM做出了生动的阐述,同时也进行了线性SVM的理论推导,以及最后的编程实践,公式较多,还需静下心来一点一点推导. 二.什么 ...

  9. android在哪存储当前用户名和密码,Android实战教程第七篇之如何在内存中存储用户名和密码...

    本文实例为大家分享了Android内存中存储用户名和密码的方法,供大家参考,具体内容如下 首先是配置文件: xmlns:tools="http://schemas.android.com/t ...

  10. 全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<监听器篇>

    文章目录 前言 一.执行监听器 1.1 处理任务 1.2 事件类型 1.3 实例代码 二.任务监听器 1.1 处理任务 1.2 事件类型 1.3 实例代码 三.实例结果 1.启动流程 2.执行任务 总 ...

最新文章

  1. php图标按钮,CSS如何创建图像图标按钮(附代码)
  2. Ubuntu下查看命令的源码
  3. 内容组织高效项目方案是如何产生的 !
  4. php 正则 前望,PHP 正则表达式
  5. JMeter环境搭建
  6. 积跬步,聚小流------Bootstrap学习记录(3)
  7. 软件测试部分练习题答案
  8. 软件设计的火花——Brooks新作及《人月神话》三十五周年讨论会纪要
  9. python enumerate函数_Python中enumerate函数用法详解
  10. 「Python基础知识」Python中常用的内建函数有哪些
  11. 别再这么写代码了,这几个方法不香吗?
  12. 管理后台--2.分类列表
  13. java 定时器qz xm配置_java_Java的作业调度类库Quartz基本使用指南,一、常用接口: 1、Job接口: - phpStudy...
  14. [转]数据安全之SQL注入资料整理
  15. 香港科技大学理学院数据建模硕士学位项目MSc DDM 项目介绍×申请指南
  16. DES算法理解--附《密码编码学与网络安全(第七版)》课后练习题答案
  17. 唐太宗李世民14个儿子的可悲结局[高清组图]
  18. 【中英】【吴恩达课后编程作业】Course 4 -卷积神经网络 - 第四周作业
  19. tensorflow如何使用tensorboard将图片文件events.out.tfevents.1618410161.DESKTOP-CLCBFNS展示出来
  20. redis安装,redis安装windows服务

热门文章

  1. c语言删除堆栈所有的结点,深入浅出数据结构C语言版(15)——优先队列(堆)(示例代码)...
  2. mysql插入汉子1366_mysql 向列表中添加漢字錯誤 1366
  3. activemq linux 100M,Linux下安装 activemq 并指定jdk 1.8(示例代码)
  4. html博客网页代码_Python自动化运维系列:Django搭建个人博客之前端篇
  5. python中await async_asyncio中的async和await
  6. 05-2_部署 kube-apiserver 集群
  7. Linux Semaphore
  8. React-如何在jsx中自动补全标签(vscode)
  9. web工程was部署
  10. 判断checkbox是否选中