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<Message> smsList;//存取一条短信得内容的对象
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main); 

  //虚拟10条短信
  smsList = new ArrayList<Message>();
  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("<messages>");
  for (Message sms : smsList) {
   sb.append("<sms>"); 

   sb.append("<body>");
   sb.append(sms.getBody());//如果发短信的人吃饱了没事干,在短信里加上了<body>,这样就会报错了。
   sb.append("</body>"); 

   sb.append("<date>");
   sb.append(sms.getDate());
   sb.append("</date>"); 

   sb.append("<type>");
   sb.append(sms.getType());
   sb.append("</type>"); 

   sb.append("<address>");
   sb.append(sms.getAddress());
   sb.append("</address>"); 

   sb.append("</sms>");
  }
  sb.append("</messages>"); 

  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卡的写操作,因此在清单文件中记得加入权限:

代码如下:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

运行程序,点击短信备份按钮。在sd卡导出xml文件,用浏览器打开。即就是短信所有信息的备份。
但是,这种方式显得很笨拙,而且当用户短信信息里面有一个<body>标签的时候,上一次的<body>就没有尾节点与之匹配。就会报错,浏览器没法解析这个文件。这种方式也不会使用,知识提供一种思路。后续先介绍xml序列化器生成xml文件,就不会遇到这种问题。

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

(0)

相关推荐

  • Android实现支持进度条显示的短信备份工具类

    使用内容提供者读取短信内容,写入XML文件,进度条ProgressDialog更新备份进度. 新知识点:子线程如何在在不使用Handler的情况下更新UI /** * 进行短信备份的工具类,支持进度条显示 * @author lian * */ public class SmsBackupUtils { private static class Data{ int progress; } /** * * @param context * 调用此工具类的Activity * @param pd *

  • Android开发工程中集成mob短信验证码功能的方法

    一.前言 现在的app基本上都需要用到短信功能,注册时或者有消息通知时需要给用户发送一条短信,但是对于个人开发者来说,去买第三方的短信服务实在是有点奢侈,很好的是mob为我们提供了免费的短信验证码服务功能,我不是打广告,的确觉得这项服务很不错.那么下面就简单讲一下如何在自己的工程里集成mob的短信功能,其实整个流程并不复杂,只是个人觉得mob的官方文档有点小乱,官方Demo也有点小复杂,同时有一些细节地方容易被忽视,也会导致一些问题. PS:太喜欢mob的logo了. 二.实现过程 本篇只涉及A

  • Android实现短信验证码自动拦截读取功能

    知识准备:  1.观察者模式的理解[文章稍后来到~~]  2.Android的Cursor使用[Android基础]  3.正则表达式使用[Java基础]  4.Handler使用[Android基础] 代码整理: MainActivity.java import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.suppo

  • Android如何通过手机自动获取短信验证码

    本文实例为大家分享了Android实现手机自动获取短信验证码功能,供大家参考,具体内容如下 1.短信监听广播 2.读取短信内容 3.截取短信内容[可以 reg截取] 4.填写至相应控件 PS:DevStore测试没有获取到验证码 源码片段 public class MainActivity extends Activity { private BroadcastReceiver smsReceiver; private IntentFilter filter2; private Handler

  • Android手机号注册、绑定手机号获取短信验证码实例

    本文写了一个常见的功能--手机app中注册或绑定手机号的获取验证码的功能,也就是短信验证功能 具体效果就是,你在注册界面填写手机号,点击获取验证码按钮,---然后会收到验证短信,填入验证码后点击注册按钮,如果验证正确就可以跳转到另外一个界面 1.首先大家需要在mob官网注册一个账号,mob是一个免费的短信验证平台 2.在mob.com后台创建应用 3.下载对应的sdk 4.将sdk作为一个library导入到你的项目中 5.现在就可以在你的项目中编写代码使用mob提供的这个功能了 具体代码如下:

  • Android接收和发送短信的实现代码

    Android收到短信时会广播android.provider.Telephony.SMS_RECEIVED消息,因此只要定义一个Receiver,收听该消息,就能接收短信. <receiver android:name=".smsReceiver" > <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </in

  • Android实现短信验证码获取自动填写功能(详细版)

    现在的应用在注册登录或者修改密码中都用到了短信验证码,那在android中是如何实现获取短信验证码并自动填写的呢? 首先,需要要在manifest中注册接收和读取短信的权限: <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> <uses-permission android:name="android.permission.READ_

  • android教程之intent的action属性使用示例(intent发短信)

    Action :规定了Intent要完成的动作,是一个字符串常量.使用setAction()来设置Action属性,使用getAction()来获得Action属性.既可以使用系统内置的Action,也可以自己定义.系统自定义的action,如ACTION_VIEW, ACTION_EDIT, ACTION_MAIN等等. 1.自定义Action 在"目的Activity"的AndroidManifest.xml中指定action常量. 复制代码 代码如下: <activity

  • Android获取和读取短信验证码的实现方法

    现如今,验证码在Android的客户端还是非常普遍的.通过手机账号和验证码直接去注册应用账户的信息.很多应用都以这种方式来完成注册.简单的介绍一下吧. Android获取短信验证码还是比较简单的,通过Mob官网提供的ShareSDK,调用其中内部的方法,就可以获取到短信的验证码了.提供一下Mob的官网地址.http://www.mob.com/#/在官网上注册相关的信息之后,下载相关的jar包和.so文件就可以实现获取短信验证码了(2.0之前的版本都需要下载jar包和 .so文件,而现在的2.2

  • Android使用MobSDK短信验证

    短信注册和短信验证已经是家常便饭了,所以当然要学习如何使用SDK啦 MobSDK可以免费发短信,当然就用它啦 http://www.mob.com 1.首先下载sdk 2.在项目新建一个叫lib的文件夹把4个东西放进去 3.在app的build.gradule添加如下代码 repositories{ flatDir{ dirs 'lib' //就是你放aar的目录地址 } } dependencies { //....... //其他依赖包 compile name: 'SMSSDK-2.1.0

随机推荐