內容觀察者-簡訊監聽-備份-插入簡訊
阿新 • • 發佈:2019-02-19
/** * 列印所有簡訊到控制檯 * @author Administrator * */ public class MainActivity extends Activity { private Button ReadBut; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ReadBut = (Button) findViewById(R.id.readBut); } public void ReadButListener(View v){ Uri uri = Uri.parse("content://sms/"); ContentResolver resolver = getContentResolver(); //第二列 簡訊資料庫 sms 表內欄位 Cursor cursor = resolver.query(uri, new String[]{"address","date","type","body"}, null, null, null); while(cursor.moveToNext()){ String address = cursor.getString(0); String date = cursor.getString(1); int type = cursor.getInt(2); String body = cursor.getString(3); System.out.println("ADD:"+address+" Date:"+date+" 狀態:"+type+" 內容:"+body); System.out.println("----------------"); } } }
/** * 插入簡訊 * */ public class MainActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); insertSms(); } private void insertSms(){ new Thread(){ public void run(){ try { Thread.sleep(2000); //獲取 內容提供者 ContentResolver ContentResolver resolver = getContentResolver(); Uri uri = Uri.parse("content://sms/"); // ContentValues 內容資料 ContentValues values = new ContentValues(); values.put("address", "95533"); values.put("type", 1); values.put("date", System.currentTimeMillis()); values.put("body", "轉入003建行卡,1,000,000 RMB"); //insert sms resolver.insert(uri, values); } catch (Exception e) { e.printStackTrace(); } } }.start(); } }
/** * ContentResolver * resolver.registerContentObserver() * Cursor cursor = resolver.query() * 註冊內容觀察者,監聽訊息郵箱,觸發訊息完成操作 * */ public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ContentResolver resolver = getContentResolver(); Uri uri = Uri.parse("content://sms/"); //true:所有字首為 content://sms/* 簡訊事件 //註冊內容觀察者,觀察uri, resolver.registerContentObserver(uri, true, new MyObserver(new Handler())); } //內容觀察者-觀察sms訊息變化 ContentObserver private class MyObserver extends ContentObserver{ public MyObserver(Handler handler) { super(handler); } //內容變化呼叫此方法,sms內容變化傳送訊息到訊息空間 @Override public void onChange(boolean selfChange) { super.onChange(selfChange); Toast.makeText(getApplicationContext(), "content change !", 1).show(); Uri uri = Uri.parse("content://sms/"); ContentResolver resolver = getContentResolver(); Cursor cursor = resolver.query( uri, new String[]{"address","date","type","body"}, null, null, null); cursor.moveToFirst();//最新的簡訊 String address = cursor.getString(0); String body = cursor.getString(3); System.out.println(" 傳送者:"+address+"--------- 傳送內容:"+body); cursor.close(); } } }