標籤:eth data- 布局 listen project content nts 問題 next
上節課學習怎樣自己建立一個ContentProvider。以及用ContentResolver去操作ContentProvider。
今天我們用系統提供的ContentProvider。 先來個簡單的,讀取系統的簡訊內容。
依據上節知道。既然要讀取系統的簡訊,那就得先找到系統的簡訊在那裡?
先找到簡訊資料庫所在的問題,然後匯出,查看裡面的內容
既然已經分析好了,我們須要什麼,不須要什麼。 當然還須要知道簡訊提供者給第三方的URL。
這個能夠通過Android原始碼查看。
那我們就寫一個程式,讀取系統中的簡訊
先看Activity中的代碼:
public class ReadMessageActivity extends Activity {Button readMessage;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_readmessage);readMessage = (Button)findViewById(R.id.button1);readMessage.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {Log.i("ReadMessageActivity", "讀取連絡人按鈕按下了");ContentResolver cResolver = getContentResolver();/** * uri: 是簡訊提供者的url。能夠通過查看原始碼獲得 * projection:須要查詢的幾個欄位,關心那個查詢按個即可 */Cursor cursor = cResolver.query(Uri.parse("content://sms"), new String[]{"address", "date", "type", "body"}, null, null, null);while(cursor.moveToNext()){String address = cursor.getString(cursor.getColumnIndex("address"));String date = cursor.getString(cursor.getColumnIndex("date"));String type = cursor.getString(cursor.getColumnIndex("type"));String body = cursor.getString(cursor.getColumnIndex("body"));Log.i("ReadMessageActivity", address + ";" + date + ";" + type + ";" + body);}}});}}
布局檔案就一個button,不做詳解
列印結果為:
ok。 讀取系統簡訊就算是簡單的完畢了。
接著我們往系統中寫一條簡訊
我們再加一個插入簡訊的button。然後當按下時就插入一條簡訊:
代碼例如以下:
writeMessage.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// 寫簡訊button被按下ContentResolver cResolver = getContentResolver();ContentValues values = new ContentValues();values.put("body", "對不起。您因為尾號為6789的手機號。欠費1w元,已停機!");values.put("address", 10086);values.put("date", System.currentTimeMillis());values.put("type", 1);cResolver.insert(Uri.parse("content://sms"), values);}});
結果例如以下:
能夠看到資料庫中已經有信插入的資訊,同一時候對話方塊中也出現了。 所以插入簡訊就搞定了。
Android 四大組件學習之ContentProvider三