文章出處

因為短信的內容已經通過ContentProvider暴露出來,所以我們可以直接用內容解析者獲取短信內容。

想要獲取短信內容,你需要知道的一些東西:

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

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

 

知道了這個就好獲取短信的相關信息了

先看代碼吧:

 

 1 public void onClick(View v) {
 2         XmlSerializer serializer = Xml.newSerializer();
 3         File file = new File(Environment.getExternalStorageDirectory().getPath(),"smsbackup.xml");
 4         try {
 5             FileOutputStream outputStream =   new FileOutputStream(file);
 6             serializer.setOutput(outputStream, "utf-8");
 7             serializer.startDocument("utf-8",true);
 8             serializer.startTag(null,"smss");
 9 
10             Uri uri = Uri.parse("content://sms/");
11             Cursor cursor = getContentResolver().query(uri,new String[]{"address","date","body"},null,null,null);
12             if (cursor!=null){
13             while (cursor.moveToNext()){
14                 String address = cursor.getString(0);
15                 String date = cursor.getString(1);
16                 String body = cursor.getString(2);
17 
18                 try {
19                     //sms節點
20                     serializer.startTag(null,"sms");
21                     //address節點
22                     serializer.startTag(null,"address");
23                     serializer.text(address);
24                     serializer.endTag(null,"address");
25                     //date節點
26                     serializer.startTag(null,"date");
27                     serializer.text(date);
28                     serializer.endTag(null,"date");
29                     //body節點
30                     serializer.startTag(null,"body");
31                     serializer.text(body);
32                     serializer.endTag(null,"body");
33 
34                     serializer.endTag(null,"sms");
35 
36                 } catch (IOException e) {
37                     e.printStackTrace();
38                 }
39                 System.out.println(address+"---"+date+"---"+body);
40             }
41         }
42             serializer.endTag(null,"smss");
43             serializer.endDocument();
44             outputStream.close();
45         } catch (FileNotFoundException e) {
46             e.printStackTrace();
47         } catch (IOException e) {
48             e.printStackTrace();
49         }
50 
51     }

 

主要用內容解析者獲取短信的信息和內容,然后用XmlSerializer存儲。

下面是Manifest.xml:需要加上這三個權限

1     <uses-permission android:name="android.permission.READ_SMS"/>
2     <uses-permission android:name="android.permission.WRITE_SMS"/>
3     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()