Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> 系統備份 >> Android開發短信備份小例子

Android開發短信備份小例子

編輯:系統備份

主要是使用內容提供者ContentProvider

 

#1.在activity_main.xml布局文件中添加寫sdcard權限,並添加讀短信的權限

 


#2.MainActivity中內容如下

 

 

package com.wzw.backupsms;

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

import org.xmlpull.v1.XmlSerializer;

import com.wzw.backupsms.entity.SmsInfo;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.util.Log;
import android.util.Xml;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	public void backupsms(View v){
	
		Uri uri=Uri.parse(content://sms/);
		ContentResolver resolver = getContentResolver();
		Cursor cursor = resolver.query(uri, new String[]{_id,address,date,type,body}, null, null, null);
		if(cursor!=null&&cursor.getCount()>0){
			List smsList=new ArrayList();
			SmsInfo smsInfo;
			while(cursor.moveToNext()){		//控制游標指針,向下移一位
				smsInfo=new SmsInfo();			
				smsInfo.setId(cursor.getInt(0));		//設置ID
				smsInfo.setAddress(cursor.getString(1));		//設置短信號碼
				smsInfo.setDate(cursor.getLong(2));				//設置短信時間
				smsInfo.setType(cursor.getInt(3));					//設置短信類型
				smsInfo.setBody(cursor.getString(4));				//設置短信內容
				smsList.add(smsInfo);
			}
			cursor.close();
			WriteToLocal(smsList);
		}
	}
	/**
	 * 序列化到本地
	 */
	private void WriteToLocal(List smsList){
		
		XmlSerializer serializer=Xml.newSerializer();
	
		try {
			FileOutputStream fos=new FileOutputStream(/mnt/sdcard/sms.xml);
			serializer.setOutput(fos, utf-8);
			serializer.startDocument(utf-8, true);
			serializer.startTag(null, smss);
			for (SmsInfo smsInfo : smsList) {
				serializer.startTag(null, sms);
				serializer.attribute(null, id,String.valueOf(smsInfo.getId()));
				//寫地址
				serializer.startTag(null, address);
				serializer.text(smsInfo.getAddress());
				serializer.endTag(null, address);
				
				//寫類型
				serializer.startTag(null, type);
				serializer.text(String.valueOf(smsInfo.getType()));
				serializer.endTag(null, type);
				
				//寫時間
				serializer.startTag(null, date);
				serializer.text(String.valueOf(smsInfo.getDate()));
				serializer.endTag(null, date);
				
				//寫內容
				serializer.startTag(null, body);
				serializer.text(smsInfo.getBody());
				serializer.endTag(null, body);
				
				serializer.endTag(null, sms);
			}
			
			serializer.endTag(null, smss);

			serializer.endDocument();
			
			Toast.makeText(this, 恭喜你,備份成功!, 0).show();
			
			
		}  catch (Exception e) {
			
			Toast.makeText(this, 我去,備份失敗!, 0).show();
			e.printStackTrace();
			
		}
		
	}
	
	
	
	
	
	
}

#3.寫入的結果

 

 


10086
1
1406446124317just for test!

110
1
1406446024971world

5556
1
1406446006018hello



 

 

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved