java 短信备份宝_Android实战教程第八篇之短信备份
各种手机助手里面都包含了短信备份这一项。短信的本分主要包含四项:内容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实战教程第八篇之短信备份相关推荐
- 零基础入门Redis实战教程(基础篇)
Redis系列已更新进阶篇,详情请见:Redis十分钟进阶实战教程(进阶篇) 文章目录 一.NoSQL 二.Redis (一)什么是Redis (二)基础的知识 (三)五大数据类型 (四)三种特殊数据 ...
- ffmpeg实战教程(八)Android平台下AVfilter 实现水印,滤镜等特效功能
ffmpeg实战教程(八)Android平台下AVfilter 实现水印,滤镜等特效功能 ffmpeg实战教程(七)Android CMake avi解码后SurfaceView显示 本篇我们在此基础 ...
- android远程打电话,Android打电话功能 Android实战教程第三篇之简单实现拨打电话功能...
想了解Android实战教程第三篇之简单实现拨打电话功能的相关内容吗,杨道龙在本文为您仔细讲解Android打电话功能的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Android拨打电话 ...
- 机器学习实战教程汇总(十三篇)
机器学习实战教程(13篇) 这些网址非常适合想学习机器学习,却苦于没有项目(尤其缺少数据)的人.无意中看到,给自己做一个记录. 机器学习实战教程(一):K-近邻算法(史诗级干货长文)https://c ...
- 微信小程序教学第二章(含视频):小程序中级实战教程之预备篇 - 提取util公用方法 |基于最新版1.0开发者工具
iKcamp官网:http://www.ikcamp.com 访问官网更快阅读全部免费分享课程:<iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享>. ...
- 【NAS备份】摆脱丢数据的噩梦,群晖备份硬核实战教程分享
前言 大家好,我是村雨Mura,本期来聊一聊我是如何用 NAS 轻松.完整地备份自己数据的. 首先,硬件再好不如备份 即便从小的线材到硬盘的质量都用最好的,也很难保证不丢数据,宇宙射线.硬盘不可逆衰减 ...
- 微信小程序教学第二章(含视频):小程序中级实战教程之预备篇 - 封装网络请求及 mock 数据...
§ 封装网络请求及 mock 数据 本文配套视频地址: v.qq.com/x/page/i055- 开始前请把 ch2-3 分支中的 code/ 目录导入微信开发工具 上一节中,我们对 index.j ...
- 机器学习实战教程(八):支持向量机原理篇
一.前言 本篇文章参考了诸多大牛的文章写成的,深入浅出,通俗易懂.对于什么是SVM做出了生动的阐述,同时也进行了线性SVM的理论推导,以及最后的编程实践,公式较多,还需静下心来一点一点推导. 二.什么 ...
- android在哪存储当前用户名和密码,Android实战教程第七篇之如何在内存中存储用户名和密码...
本文实例为大家分享了Android内存中存储用户名和密码的方法,供大家参考,具体内容如下 首先是配置文件: xmlns:tools="http://schemas.android.com/t ...
- 全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<监听器篇>
文章目录 前言 一.执行监听器 1.1 处理任务 1.2 事件类型 1.3 实例代码 二.任务监听器 1.1 处理任务 1.2 事件类型 1.3 实例代码 三.实例结果 1.启动流程 2.执行任务 总 ...
最新文章
- php图标按钮,CSS如何创建图像图标按钮(附代码)
- Ubuntu下查看命令的源码
- 内容组织高效项目方案是如何产生的 !
- php 正则 前望,PHP 正则表达式
- JMeter环境搭建
- 积跬步,聚小流------Bootstrap学习记录(3)
- 软件测试部分练习题答案
- 软件设计的火花——Brooks新作及《人月神话》三十五周年讨论会纪要
- python enumerate函数_Python中enumerate函数用法详解
- 「Python基础知识」Python中常用的内建函数有哪些
- 别再这么写代码了,这几个方法不香吗?
- 管理后台--2.分类列表
- java 定时器qz xm配置_java_Java的作业调度类库Quartz基本使用指南,一、常用接口:
1、Job接口: - phpStudy...
- [转]数据安全之SQL注入资料整理
- 香港科技大学理学院数据建模硕士学位项目MSc DDM 项目介绍×申请指南
- DES算法理解--附《密码编码学与网络安全(第七版)》课后练习题答案
- 唐太宗李世民14个儿子的可悲结局[高清组图]
- 【中英】【吴恩达课后编程作业】Course 4 -卷积神经网络 - 第四周作业
- tensorflow如何使用tensorboard将图片文件events.out.tfevents.1618410161.DESKTOP-CLCBFNS展示出来
- redis安装,redis安装windows服务
热门文章
- c语言删除堆栈所有的结点,深入浅出数据结构C语言版(15)——优先队列(堆)(示例代码)...
- mysql插入汉子1366_mysql 向列表中添加漢字錯誤 1366
- activemq linux 100M,Linux下安装 activemq 并指定jdk 1.8(示例代码)
- html博客网页代码_Python自动化运维系列:Django搭建个人博客之前端篇
- python中await async_asyncio中的async和await
- 05-2_部署 kube-apiserver 集群
- Linux Semaphore
- React-如何在jsx中自动补全标签(vscode)
- web工程was部署
- 判断checkbox是否选中