Android中 備份短信 還原短信

jopen 9年前發布 | 24K 次閱讀 Android Android開發 移動開發

備份短信

讀取手機里的短信,備份成xml文件保存到SD卡上。

xml文件就只有一個button控件,就不再給出xml代碼了。

    import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.xmlpull.v1.XmlSerializer;  

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

public class MainActivity extends Activity {  
    private Button bt_readsms;  
    /** 
     * 短信備份的文件對象 
     */  
    private File smsBackUpFile;  

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        bt_readsms = (Button) findViewById(R.id.bt_readsms);  
        bt_readsms.setOnClickListener(new OnClickListener() {  
            @Override  
            public void onClick(View v) {  
                try {  
                    //創建一個存儲備份短信的文件對象  
                    smsBackUpFile = new File(Environment.getExternalStorageDirectory(),"sms.xml");  

                    //創建一個xml文件的生成器。  
                     XmlSerializer serializer = Xml.newSerializer();  
                     //完成序列化器初始化操作。  
                     FileOutputStream os = new FileOutputStream(smsBackUpFile);  
                     serializer.setOutput(os, "utf-8");  
                    //內容提供者。  
                    //獲取到一個數據庫的內容的解析者  
                    ContentResolver resolver = getContentResolver();  
                    //游標(結果集)  
                    Cursor cursor = resolver.query(Uri.parse("content://sms"),  
                            new String[]{"address","date","type","body"},   
                            null,   
                            null,  
                            null);  
                    //生成xml文件的頭  
                    serializer.startDocument("utf-8", true);  
                    serializer.startTag(null, "smss");  
                    while(cursor.moveToNext()){  
                        serializer.startTag(null, "sms");  
                        String address = cursor.getString(0);  
                        String date = cursor.getString(1);  
                        String type = cursor.getString(2);  
                        String body = cursor.getString(3);  

                        serializer.startTag(null, "address");  
                        System.out.println("短信地址:"+address);  
                        serializer.text(address);  
                        serializer.endTag(null, "address");  

                        serializer.startTag(null, "date");  
                        System.out.println("短信時間:"+date);  
                        serializer.text(date);  
                        serializer.endTag(null, "date");  

                        serializer.startTag(null, "body");  
                        System.out.println("短信內容:"+body);  
                        serializer.text(body);  
                        serializer.endTag(null, "body");  

                        serializer.startTag(null, "type");  
                        System.out.println("短信類型:"+type);  
                        serializer.text(type);  
                        serializer.endTag(null, "type");  

                        serializer.endTag(null, "sms");  
                    }  
                    cursor.close();  
                    serializer.endTag(null, "smss");  
                    serializer.endDocument();  
                    os.close();  
                    Toast.makeText(getApplicationContext(), "備份完成", 1).show();  
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  
            }  
        });  
    }  


}  </pre><br />

還原短信

通過代碼程序控制向手機發送短信,10s后手機可以接收到短信

xml文件就只有一個button控件,就不再給出xml代碼了。

    import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends Activity {  


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

    }  

    /** 
     * 還原一條短信 
     *  
     * @param view 
     */  
    public void click(View view) {  
        new Thread(){  
            public void run() {  
                try {  
                    //等待10秒鐘的時間  
                    Thread.sleep(10000);  
                } catch (InterruptedException e) {  
                    e.printStackTrace();  
                }  
                // 獲取到一個數據庫的內容的解析者  
                ContentResolver resolver = getContentResolver();  
                ContentValues values = new ContentValues();  
                values.put("address", "95533");//指定短信的發件人  
                values.put("date", System.currentTimeMillis());  
                values.put("body", "尊敬的客戶,您的銀行卡余額還有300萬");  
                values.put("type", "1");  
                resolver.insert(Uri.parse("content://sms"), values);  
            };  
        }.start();  
    }  
}  </pre><br />
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!