查詢:
search.setOnClickListener(new OnClickListener() { @Override public void onClick(View source) { // 定義兩個List來封裝系統的聯系人信息、指定聯系人的電話號碼、Email等詳情 final ArrayList<String> names = new ArrayList<>(); final ArrayList<ArrayList<String>> details = new ArrayList<>(); // 使用ContentResolver查找聯系人數據 Cursor cursor = getContentResolver().query( ContactsContract.Contacts.CONTENT_URI, null, null, null, null); // 遍歷查詢結果,獲取系統中所有聯系人 while (cursor.moveToNext()) { // 獲取聯系人ID String contactId = cursor.getString(cursor .getColumnIndex(ContactsContract.Contacts._ID)); // 獲取聯系人的名字 String name = cursor.getString(cursor.getColumnIndex( ContactsContract.Contacts.DISPLAY_NAME)); names.add(name); // 使用ContentResolver查找聯系人的電話號碼 Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null); Log.e("mrpeng", "selection: "+ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId ); ArrayList<String> detail = new ArrayList<>(); // 遍歷查詢結果,獲取該聯系人的多個電話號碼 while (phones.moveToNext()) { // 獲取查詢結果中電話號碼列中數據 String phoneNumber = phones.getString(phones .getColumnIndex(ContactsContract .CommonDataKinds.Phone.NUMBER)); detail.add("電話號碼:" + phoneNumber); } phones.close(); // 使用ContentResolver查找聯系人的E-mail地址 Cursor emails = getContentResolver().query( ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email .CONTACT_ID + " = " + contactId, null, null); // 遍歷查詢結果,獲取該聯系人的多個E-mail地址 while (emails.moveToNext()) { // 獲取查詢結果中E-mail地址列中數據 String emailAddress = emails.getString(emails .getColumnIndex(ContactsContract .CommonDataKinds.Email.DATA)); detail.add("郵件地址:" + emailAddress); } emails.close(); details.add(detail); } cursor.close();添加
add.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 獲取程序界面中的三個文本框的內容 String name = ((EditText) findViewById(R.id.name)) .getText().toString(); String phone = ((EditText) findViewById(R.id.phone)) .getText().toString(); String email = ((EditText) findViewById(R.id.email)) .getText().toString(); // 創建一個空的ContentValues ContentValues values = new ContentValues(); // 向RawContacts.CONTENT_URI執行一個空值插入 // 目的是獲取系統返回的rawContactId Uri rawContactUri = getContentResolver().insert( ContactsContract.RawContacts.CONTENT_URI, values); long rawContactId = ContentUris.parseId(rawContactUri); values.clear(); values.put(Data.RAW_CONTACT_ID, rawContactId); // 設置內容類型 values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE); // 設置聯系人名字 values.put(StructuredName.GIVEN_NAME, name); // 向聯系人URI添加聯系人名字 getContentResolver().insert(android.PRovider.ContactsContract .Data.CONTENT_URI, values); values.clear(); values.put(Data.RAW_CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE); // 設置聯系人的電話號碼 values.put(Phone.NUMBER, phone); // 設置電話類型 values.put(Phone.TYPE, Phone.TYPE_MOBILE); // 向聯系人電話號碼URI添加電話號碼 getContentResolver().insert(android.provider.ContactsContract .Data.CONTENT_URI, values); values.clear(); values.put(Data.RAW_CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE); // 設置聯系人的E-mail地址 values.put(Email.DATA, email); // 設置該電子郵件的類型 values.put(Email.TYPE, Email.TYPE_WORK); // 向聯系人E-mail URI添加E-mail數據 getContentResolver().insert(android.provider.ContactsContract .Data.CONTENT_URI, values); Toast.makeText(MainActivity.this, "聯系人數據添加成功", Toast.LENGTH_SHORT).show(); } });ContentProvider也可獲取多媒體內容
add.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 創建ContentValues對象,準備插入數據 ContentValues values = new ContentValues(); values.put(Media.DISPLAY_NAME, "jinta"); values.put(Media.DESCR監聽ContentProvider數據變化@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 為content://sms的數據改變注冊監聽器 getContentResolver().registerContentObserver( Uri.parse("content://sms"), true, new SmsObserver(new Handler())); } // 提供自定義的ContentObserver監聽器類 private final class SmsObserver extends ContentObserver { public SmsObserver(Handler handler) { super(handler); } public void onChange(boolean selfChange) { // 查詢發送箱中的短信(處于正在發送狀態的短信放在發送箱) Cursor cursor = getContentResolver().query( Uri.parse("content://sms/outbox") , null, null, null, null); // 遍歷查詢得到的結果集,即可獲取用戶正在發送的短信 while (cursor.moveToNext()) { StringBuilder sb = new StringBuilder(); // 獲取短信的發送地址 sb.append("address=").append(cursor .getString(cursor.getColumnIndex("address"))); // 獲取短信的標題 sb.append(";subject=").append(cursor .getString(cursor.getColumnIndex("subject"))); // 獲取短信的內容 sb.append(";body=").append(cursor .getString(cursor.getColumnIndex("body"))); // 獲取短信的發送時間 sb.append(";time=").append(cursor .getLong(cursor.getColumnIndex("date"))); System.out.println("發送短信:" + sb.toString()); } } }新聞熱點
疑難解答