android–簡訊查詢

來源:互聯網
上載者:User
sms主要結構: 

  1. _id => 短訊息序號 如100  
  2. thread_id => 對話的序號 如100  
  3. address => 寄件者地址,手機號.如+8613811810000  
  4. person => 寄件者,返回一個數字就是連絡人清單裡的序號,陌生人為null  
  5. date => 日期  long型。如1256539465022  
  6. protocol => 協議 0 SMS_RPOTO, 1 MMS_PROTO   
  7. read => 是否閱讀 0未讀, 1已讀   
  8. status => 狀態 -1接收,0 complete, 64 pending, 128 failed
      
  9. type => 類型 1是接收到的,2是已發出   
  10. body => 短訊息內容   
  11. service_center => 簡訊服務中心號碼編號。如+8613800755500  

查詢簡訊是通過contentprovider實現的 例如  查詢收件匣:managedQuery(Uri.parse("content://sms/inbox");
查詢寄件匣 managedQuery(Uri.parse("content://sms/send");

Java代碼

public final static String
SMS_URI_ALL =  "content://sms/"; //0  
public final static String SMS_URI_INBOX = "content://sms/inbox";//1  
public final static String SMS_URI_SEND = "content://sms/sent";//2  
public final static String SMS_URI_DRAFT = "content://sms/draft";//3  
public final static String SMS_URI_OUTBOX = "content://sms/outbox";//4  
public final static String SMS_URI_FAILED = "content://sms/failed";//5  
public final static String SMS_URI_QUEUED = "content://sms/queued";//6  

例子:package com.shao.sms;</p><p>import android.app.Activity;<br />import android.database.Cursor;<br />import android.database.sqlite.SQLiteException;<br />import android.net.Uri;<br />import android.os.Bundle;<br />import android.util.Log;<br />import android.widget.TextView;</p><p>public class ReadSMSActivity extends Activity {<br />/** Called when the activity is first created. */<br />private static final String LOG_TAG = "Sms Query";</p><p>@Override<br />public void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.main);<br /> super.onCreate(savedInstanceState);<br /> TextView tv = (TextView) findViewById(R.id.text);</p><p> tv.setText("");<br /> tv.setText(getSmsAndSendBack());<br />}<br />/**<br />* 讀取簡訊<br />* @return<br />*/<br />public String getSmsAndSendBack()<br />{<br /> String[] projection = new String[] {<br /> "_id",<br /> "address",<br /> "person",<br /> "body",<br /> "type"<br /> };<br /> StringBuilder str=new StringBuilder();<br /> try{<br /> Cursor myCursor = managedQuery(Uri.parse("content://sms"),<br /> projection,<br /> null, null , "date desc");<br /> str.append(processResults(myCursor));<br /> }<br /> catch (SQLiteException ex)<br /> {<br /> Log.d(LOG_TAG, ex.getMessage());<br /> }<br /> return str.toString();<br />}<br />/**<br />* 處理簡訊結果<br />*<br />*/<br />private StringBuilder processResults(Cursor cur) {<br /> // TODO Auto-generated method stub<br /> StringBuilder sb=new StringBuilder();<br /> if (cur.moveToFirst()) {</p><p> String name;<br /> String phoneNumber;<br /> String sms;<br /> int type;</p><p> int nameColumn = cur.getColumnIndex("person");<br /> int phoneColumn = cur.getColumnIndex("address");<br /> int smsColumn = cur.getColumnIndex("body");<br /> int typeColum = cur.getColumnIndex("type");</p><p> do {<br /> // Get the field values<br /> name = cur.getString(nameColumn);<br /> phoneNumber = cur.getString(phoneColumn);<br /> sms = cur.getString(smsColumn);<br /> type = cur.getInt(typeColum);</p><p> System.out.println("..................................");<br /> System.out.println("name"+name);<br /> System.out.println("type"+type);<br /> System.out.println("phoneNumber"+phoneNumber);<br /> System.out.println("sms"+sms);<br /> System.out.println("..................................");<br /> sb.append("{");<br /> sb.append(name+",");<br /> sb.append(phoneNumber+",");<br /> sb.append(sms);<br /> sb.append("}");<br /> if (null==sms)<br /> sms="";<br /> } while (cur.moveToNext());<br /> }<br /> else<br /> {<br /> sb.append("no result!");<br /> }</p><p> return sb;<br />}<br />}

記得在AndroidManifest.xml中加入android.permission.READ_SMS這個permission

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.