Android实战教程第九篇之短信高效备份

Android短信高效备份这篇文章,承接上一篇。使用高效的方式备份短信——xml序列化器。

存储短信,要以对象的方式存储。首先创建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中的diamante如下:

package com.itydl.xmlserializer; 

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List; 

import org.xmlpull.v1.XmlSerializer; 

import com.itheima.createxml.domain.Message; 

import android.os.Bundle;
import android.app.Activity;
import android.util.Xml;
import android.view.Menu;
import android.view.View;
//为了更好地保存不同,且负责的数据,使用xml序列器
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);
  }
 } 

 public void click(View v){
  //使用xml序列化器生成xml文件。序列化器会把乱七八糟的东西(短信里有标签属性)过滤掉
  //1.拿到序列化器对象
  XmlSerializer xs = Xml.newSerializer();
  //2.初始化.因为涉及到xml文件,因此初始化也包含文件名和路径
  File file = new File("sdcard/sms2.xml");
  try {
   FileOutputStream fos = new FileOutputStream(file);
   //enconding:指定用什么编码生成xml文件
   xs.setOutput(fos, "utf-8");//setOutput(OutputStream os, String encoding) ,编码方式默认u8 

   //3.开始生成xml文件
   //enconding:指定头结点中的enconding属性的值
   xs.startDocument("utf-8", true);//生成头结点(最高一行),startDocument(String encoding, Boolean standalone) 

   xs.startTag(null, "message");//生成一个根节点,开始标签节点 

   for (Message sms : smsList) {
    xs.startTag(null, "sms"); 

    xs.startTag(null, "body");//start和end一对一对的写。还有四个子节点
    xs.text(sms.getBody() + "<body>");//这样不会报错。而是把<body>当做了内容了
    xs.endTag(null, "body"); 

    xs.startTag(null, "date");
    xs.text(sms.getDate());
    xs.endTag(null, "date"); 

    xs.startTag(null, "type");
    xs.text(sms.getType());
    xs.endTag(null, "type"); 

    xs.startTag(null, "address");
    xs.text(sms.getAddress());
    xs.endTag(null, "address"); 

    xs.endTag(null, "sms");
   } 

   xs.endTag(null, "message"); 

   //告诉序列化器,文件生成完毕
   xs.endDocument();
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 } 

} 

最后也要记得加入权限:

代码如下:

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

可见这种方式解决了前面遇到的问题,而且高效了很多。

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

(0)

相关推荐

  • 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开发工程中集成mob短信验证码功能的方法

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

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

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

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

  • 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

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

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

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

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

  • 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

随机推荐