1. 程式人生 > >內容觀察者-簡訊監聽-備份-插入簡訊

內容觀察者-簡訊監聽-備份-插入簡訊

/**
 * 列印所有簡訊到控制檯
 * @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();
		}
	}
}