Android入門掃盲之三————-電話薄

Android入門掃盲之三————-電話薄

電話薄在實際的開發中還是很常見的,在論壇中經常有人問,回答的也是事實而非,今天有空做點記錄吧。

電話薄的開發無非就是對連絡方式的增、刪、改、查四種操作,這裡可要注意了,在Android裡面給使用者的許可權更大,可以修改和刪除已有的連絡人的資訊,與J2me PIM不一樣哦。在Android系統裡面正對連絡人的操作是被劃分在Content Providers裡面,用做好類似的開發,需要瞭解的知識:Uri(不是Url)、Android的許可權控制、Android的聯絡方是表的欄位等等。

有了上面的知識其實就可以開發增刪改查的功能了,在網路上面看的基本只有增和查,在這裡重點也在更新和刪除,注意在做涉及到網系統讀寫的操作的時候,要在你的AndroidMainfest.xml裡面把許可權開啟:

這裡讀和寫的許可權都要開啟,與我們一般的思路有點不一樣,這裡讀寫權限是分開的,要是還想打電話就要也要把其對應的許可權開啟

這些都是一些很細節性的基礎東西,對於初學者很有必要注意哦,有的時候這些簡單的基礎東西沒有注意可能會然他你死活找不到bug所在。

廢話少說,下面貼點代碼:

<1>添加:

public boolean insert(String name, String phoneNum, String email, String qq) {

if (name == null) {

Log.e(TAG, "The Name is not allow null!!");

return false;

}

try {

ContentResolver contentResolver = mContext.getContentResolver();

ContentValues values = new ContentValues();

Uri phoneUri = null;

// 添加姓名

values.put(Contacts.People.NAME, name);

// 映射關係:1 = 新的連絡方式加入 favorites,0 = 新的連絡方式不是加入 favorites

values.put(Contacts.People.STARRED, 1);

Uri uri = Contacts.People.createPersonInMyContactsGroup(contentResolver, values);

// 添加電話號碼

// 最好的辦法是先得到People表的Uri,然後使用Uri的靜態方法withAppendedPath來擷取一個新的Uri作為我們新要插入資料的Uri

if (phoneNum != null && !phoneNum.trim().equals("")) {

phoneUri = Uri.withAppendedPath(uri, Contacts.People.Phones.CONTENT_DIRECTORY);

values.clear();

values.put(Contacts.Phones.TYPE, Contacts.Phones.NUMBER);

values.put(Contacts.Phones.NUMBER, phoneNum);

contentResolver.insert(phoneUri, values);

}

if (email != null && !email.trim().equals("")) {

// 添加Email

Uri emailUri = Uri.withAppendedPath(uri, Contacts.People.ContactMethods.CONTENT_DIRECTORY);

values.clear();

// ContactMethods.KIND 是用來區分像email,im等等不同連絡方式

values.put(Contacts.ContactMethods.KIND, Contacts.KIND_EMAIL);

values.put(Contacts.ContactMethods.DATA, email);

values.put(Contacts.ContactMethods.TYPE, Contacts.ContactMethods.TYPE_HOME);

contentResolver.insert(emailUri, values);

}

if (qq != null && !qq.trim().equals("")) {

// 添加QQ號碼

values.clear();

Uri qqUri = Uri.withAppendedPath(uri, Contacts.People.ContactMethods.CONTENT_DIRECTORY);

values.put(Contacts.ContactMethods.KIND, Contacts.KIND_IM);

values.put(Contacts.ContactMethods.DATA, qq);

values.put(Contacts.ContactMethods.TYPE, Contacts.ContactMethods.TYPE_HOME);

contentResolver.insert(qqUri, values);

}

} catch (Exception e) {

Log.e(TAG, "InsertContact Error !!!!");

return false;

}

return true;

}

<2>刪除:

public boolean delete(String name) {

ContentResolver contentResolver = mContext.getContentResolver();

if (name != null)

contentResolver.delete(Contacts.People.CONTENT_URI, Contacts.People.NAME + "=?", new String[] { name });

else

contentResolver.delete(Contacts.People.CONTENT_URI, null, null);

return true;

}

<3>更新:

更新麻煩一點,需要先按更新條件找到記錄所帶的id,之後再做相應的操作。

ContentResolver contentResolver = mContext.getContentResolver(); Cursor cusor = null; String[] projection = new String[] { Contacts.People._ID, Contacts.People.NAME, Contacts.People.NUMBER }; cusor= contentResolver.query(Contacts.People.CONTENT_URI, projection,Contacts.People.NAME + "=?", new String[] { oldName },Contacts.People.NAME + " ASC"); cusor.moveToFirst(); ContentValues values = new ContentValues(); Uri uri = Uri.withAppendedPath(Contacts.People.CONTENT_URI, cusor.getString(cusor.getColumnIndex(Contacts.People._ID))); values.put(Contacts.People.NAME, newName); values.put(Contacts.People.STARRED, 0); values.put(Contacts.Phones.NUMBER, newPhoneNum); contentResolver.update(uri, values, null, null);

相关推荐

没有找到站点
365bet体育线上

没有找到站点

📅 09-11 👁️ 1761
锆价格价格
365bet娱乐网站

锆价格价格

📅 01-02 👁️ 2127
借钱购物平台有哪些?这5类渠道新人必看!
365bet娱乐网站

借钱购物平台有哪些?这5类渠道新人必看!

📅 07-22 👁️ 2552
三星 TabS8 平板 root 全流程记录
365bet娱乐网站

三星 TabS8 平板 root 全流程记录

📅 10-30 👁️ 666