您的位置:首页 > 移动开发 > Android开发

android ContentProvider访问、备份、插入短信

2017-05-10 09:12 239 查看
/*

* 短信的provider

* <provider>

*     android:name="SmsProvider"

*     android:authorities="sms"

*     android:multiprocess="true"

*     android:readPermission="android.permission.READ_SMS"

*     android:wirtePermission="android.permission.WRITE_SMS"

* </provider>

*

* */

public class MainActivity extends AppCompatActivity {

    private List<Sms> smsList=new ArrayList<>();

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }

    public  void querySms(View view){

        ContentResolver resolver=getContentResolver();

        //通过查看smsProvider的代码子路径查询所有authorities传null

        Uri uri= Uri.parse("content://sms");

        String[] project={"address","date","body"};

        Cursor cursor=resolver.query(uri,project,null,null,null);

        System.out.println("----------"+cursor.getColumnCount());

        while (cursor.moveToNext()) {

            Sms sms =new Sms();

            String address=cursor.getString(0);

            String date=cursor.getString(1);

            String body=cursor.getString(2);

            sms.body=body;

            sms.address=address;

            sms.date=date;

            smsList.add(sms);

            System.out.println(address+"---"+date+"---"+body);

        }

        for (Sms sms:smsList) {

            System.out.println(sms);

        }

    }

    /**

     * @param view

     * 备份短信

     */

    public  void backupSms(View view){

        //获取XML序列化器

        XmlSerializer serializer= Xml.newSerializer();

        try {

            //给xml序列化器设置输出

            serializer.setOutput(openFileOutput("sms.xml",MODE_PRIVATE),"utf-8");

            //写文档开始的标记<?xml version="1.0" encoding="utf-8"?>

            serializer.startDocument("utf-8",true);

            // 开始标签

            serializer.startTag(null,"SmsList");

            for (Sms sms : smsList) {

                serializer.startTag(null,"sms");

                //标签的节点

                serializer.startTag(null,"address");

                serializer.text(sms.address);

                serializer.endTag(null,"address");

                //标签的节点

                serializer.startTag(null,"date");

                serializer.text(sms.date);

                serializer.endTag(null,"date");

                //标签的节点

                serializer.startTag(null,"body");

                serializer.text(sms.body);

                serializer.endTag(null,"body");

                serializer.endTag(null,"sms");

            }

                serializer.endTag(null, "SmsList");

            serializer.endDocument();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

    /**

     * @param view

     * 插入短信一般不会有这样的权限自己玩

     */

    public void insert(View view){

        ContentResolver resolver=getContentResolver();

        Uri uri=Uri.parse("content://sms");

        ContentValues values=new ContentValues();

        values.put("date",System.currentTimeMillis());

        values.put("address",95555);

        values.put("body","您的尾号为888的金卡工资入账");

        resolver.insert(uri,values);

    }

}

public class Sms {

    public String date;

    public String address;

    public String body;

    @Override

    public String toString() {

        return "Sms [date="+date+",address="+address+",body="+body+"]";

    }

}

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

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

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/activity_main"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    android:orientation="vertical"

    tools:context="com.example.zhongtao.day11.MainActivity">

    <Button

        android:text="查询短信"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:id="@+id/querySms"

        android:onClick="querySms"

        />

    <Button

        android:text="备份短信"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:id="@+id/backup"

        android:onClick="backupSms"

        />

    <Button

        android:text="插入短信"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:id="@+id/insert"

        android:onClick="backupSms"

        />

</LinearLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: