android 利用內容提供者備份短信(XML序列化器)

備份短信同時用xml序列話器處理數據

public void BackupSMS() {
    ContentResolver resolver = getContentResolver();
    Uri uri = Uri.parse("content://sms/");

    //參數 字符串數組裏面只獲取三列(發件人,內容,時間),如要其他字段自行添加

    Cursor cursor = resolver.query(uri, new String[] { "address", "body", "date" }, null, null, null);

    //保存到file下
    File file = new File(Environment.getExternalStorageDirectory(), "sms.xml");

    //等到文件的輸入流
        FileOutputStream fos = new FileOutputStream(file);
        //等到XML序列化
        XmlSerializer xml = Xml.newSerializer();
        //設置輸入   ,編碼utf-8
        xml.setOutput(fos, "utf-8");
        //  文件頭
        xml.startDocument("utf-8", true);
        //一級標籤開頭,有頭必有尾與之對應
        xml.startTag(null, "messages");
        //下面就遍歷提供者獲取的數據 從遊標cursor遍歷
        while (cursor.moveToNext()) {
            String address = cursor.getString(0);
            String body = cursor.getString(1);
            long date = cursor.getLong(2);
            // Toast.makeText(this, address+"----"+body+"------"+new
            // Date(date), Toast.LENGTH_LONG).show();
            xml.startTag(null, "sms");
            xml.startTag(null, "address");
            xml.text(address);
            xml.endTag(null, "address");
            xml.startTag(null, "body");
            xml.text(body);
            xml.endTag(null, "body");

            xml.startTag(null, "date");
            xml.text(date + "");
            xml.endTag(null, "date");

            xml.endTag(null, "sms");
        }
        //結尾一級標籤
        xml.endTag(null, "messages");
        //文件尾
        xml.endDocument();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章