Android中 备份短信 还原短信

jopen 10年前

备份短信

读取手机里的短信,备份成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();                        }                    }                });            }                           }  

还原短信

通过代码程序控制向手机发送短信,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();            }        }