SIM卡 --- 聯絡人增加/刪除/更新 分析
3.2 更新
insert/ delete/ update 三個方法執行的流程幾乎完全相同,以update方法為例進行論述。
update方法主要邏輯如下,
1,根據不同型別為引數賦值,
case ADN:
efType = IccConstants.EF_ADN;
subId = SubscriptionManager.getDefaultSubId();
break;
•••
2,呼叫updateIccRecordInEf方法進行操作,
boolean success = updateIccRecordInEf(efType, values, pin2, subId);
3,如果操作失敗,就返回0,
if (!success) {
return 0;
}
否則,就呼叫notifyChange方法,已註冊了該資料的介面可以進行重新載入資料庫,更新UI等,
getContext().getContentResolver().notifyChange(url, null);
return 1;
主要是updateIccRecordInEf方法,這個方法和loadFromEf方法呼叫流程圖完全相同,也是一個同步方法。因此,細節方面就不論述了,流程圖如下,
IccPhoneBookInterfaceManager的updateAdnRecordsWithContentValuesInEfBySearch方法邏輯如下,
1,檢查是否在子執行緒中執行,
synchronized (mLock) {
checkThread();
因為當前的執行緒需要休眠喚醒,因此,不能在UI執行緒中執行。
2,返回值初始化為false,構造回撥訊息EVENT_UPDATE_DONE,
mSuccess = false;
AtomicBoolean status = new AtomicBoolean(false);
Message response = mBaseHandler.obtainMessage(EVENT_UPDATE_DONE, status);
3,呼叫AdnRecordCache的updateAdnBySearch方法進行處理,
AdnRecord oldAdn = new AdnRecord(oldTag, oldPhoneNumber, oldEmailArray, oldAnrArray);
AdnRecord newAdn = new AdnRecord(newTag, newPhoneNumber,
newEmailArray, newAnrArray);
if (mAdnCache != null) {
mAdnCache.updateAdnBySearch(efid, oldAdn, newAdn, pin2, response);
4,呼叫waitForResult方法進行執行緒休眠,
waitForResult(status);
5,當前執行緒休眠之後喚醒之後,就返回結果,
return mSuccess;
當然,處理完成之後,當前執行緒在回撥處理的時候進行喚醒。
IccPhoneBookInterfaceManager的handleMessage方法對EVENT_UPDATE_DONE訊息處理如下,
ar = (AsyncResult) msg.obj; // 獲取結果
synchronized (mLock) {
mSuccess = (ar.exception == null);
notifyPending(ar);
}
break;
如果沒有異常,就返回true,否則更新失敗,返回false。
notifyPending方法裡面會喚醒執行緒。
回撥方法流程完全相同,在此就不論述了。
6.4 notifyChange
實際上,除了開機,插拔SIM卡會從聯絡人資料庫中同步/刪除SIM卡聯絡人之外,SIM卡中聯絡人的更新/刪除/增加操作不僅會更新SIM卡聯絡人,而且也會將這些聯絡人同步到聯絡人資料庫中,最後通過LoaderManager機制載入到介面顯示出來。
相關推薦
SIM卡 --- 聯絡人增加/刪除/更新 分析
3.2 更新 insert/ delete/ update 三個方法執行的流程幾乎完全相同,以update方法為例進行論述。 update方法主要邏輯如下, 1,根據不同型別為引數賦值, case ADN: efType = IccConstants.EF_ADN;
資料庫中刪除SIM卡聯絡人
4,SIM卡聯絡人 Contacts2.db資料庫中聯絡人其實包括2部分,手機上面的聯絡人以及SIM卡中的聯絡人。 當然, SIM卡中的聯絡人是儲存在單獨的資料庫中,其對應的Provider為IccProvider,在packages\services\Telephony
C# 增加 刪除 更新 方法
ide 影響 返回 return color 行數 class 增加 .exe /// <summary> /// 增加一條數據 /// </summary> public int Add(strin
查詢SIM卡聯絡人——原始碼流程簡介
查詢SIM卡聯絡人 查詢SIM卡中的聯絡人使用的方法為 query( ) 方法,與操作資料庫中的查詢方法極其類似,使用方式與如下類似: getContentResolver().query("content://icc/adn/subId/1", nul
android中對sim卡聯絡人的增刪改查以及監聽sim卡聯絡資料的改變
sim卡聯絡人的增刪改查主要是通過ContentProvider來進行操作的,在android中對sim卡聯絡人操作的provider是定義在IccProvider.java這個類中的,這個類位於android原始碼的位置frameworks/base/telephony/
資料庫中同步SIM卡聯絡人
4.2 同步聯絡人 當重新插入SIM卡時, SimContactsService 的onCreate方法內的匿名Handler的handleMessage方法對應的處理如下, case MSG_SIM_REFRESH: ••• if (mSimState[sub] == S
android讀取sim卡聯絡人
SIM的provider是IccProvider。既然是provider,就和操作Contact的provider類似的,只是有一些微小差別。 IccProvider的Uri是content://icc/and,可以通過這個Uri來操作SIM卡。當然,使用時需要轉換為an
獲取android手機了通訊錄和sim卡聯絡人
private ArrayList<SamContact> getAllContacts(){ArrayList<SamContact> arrayList = new ArrayList<SamContact>();//獲取本機聯絡人C
Android SIM卡聯絡人操作總結
--- by Ruiming.Lv 在Android中,對SIM中的聯絡人進行操作,需要通過系統提供的Content Provider進行,該Provider就是Telphony中的IccProvider。但是,由於SIM卡儲存的一些特性,在操作上,與ContactsP
Mybatis的應用2 使用mybits+SpringBoot完成第一個查詢的demo(隨後加增加,更新,刪除)
添加 span string nco 返回 一個數 .config 地址 slf4 首先在mapper下面新建一個mysql.xml mysql.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYP
Spring boot集成Redis(1)—進行增加,更新,查詢,批量刪除等操作
緩存 獲取數據 prope XML ray end 序列 www pin 前言:最近工作中使用到了redis緩存,故分享一點自己總結的東西,這篇文章使用的是StringRedisTemplate進行學習,這裏值的說的是,(1)StringRedisTemplate在進行批量
Android---操作SIM卡對聯絡人的影響(二)
前言 今天整理一下關於在Contacts中通過Setting進行Import/Export SIM卡聯絡人的過程。同樣,原始碼分析基於Android8高通平臺。 Import過程 Import過程是指將SIM卡中的聯絡人匯入(copy)到本地賬號中,需要強調的一
JDBC增刪改查--資料庫增加刪除、更新、查詢例項
package cn.com.JDBC; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; pu
將SIM卡上的聯絡人匯入Android手機中
新購買Android手機的朋友第一件事情可能就是需要將SIM卡上的聯絡人匯入到手機中,但是許多朋友卻不知道如何將聯絡人從SIM卡匯入到新購買的Android手機上,為此在這裡我們有必要給大家介紹下如何快速將SIM卡聯絡人匯入到手機中。 對於許多朋友的提問,我們並無
Yii資料庫操作增刪改查-[增加\查詢\更新\刪除 AR模式]
本人小菜鳥一隻,為了自我學習和交流PHP(jquery,linux,lamp,shell,javascript,伺服器)等一系列的知識,小菜鳥建立了一個群。希望光臨本部落格的人可以進來交流。尋求共同
Android工具類—— android 從SIM卡獲取聯絡人資訊
<span style="font-size:18px;color:#3333ff;">01./** 02. * 從SIM卡中讀取聯絡人資訊 03. * @r
從SIM卡中獲取聯絡人資訊
Uri uri = Uri.parse("content://icc/adn"); String[] projection = {"_id", "name", "number"}; Cursor cursor = managedQuery(uri, projection,
Android 4.4Telephony流程分析SIM卡開機時的資料載入
本文程式碼以MTK平臺Android 4.4為分析物件,與Google原生AOSP有些許差異,請讀者知悉。 本文主要介紹sim卡資料的讀取過程,當射頻狀態處於準備狀態時,此時UiccCardApplication應處於AppState.APPSTATE_READ
Android原始碼----操作SIM卡對聯絡人的影響(一)
前言 SIM(Subscriber Identification Module )卡:也稱為使用者身份識別卡、智慧卡,GSM數字行動電話機必須裝上此卡方能使用。SIM卡有很多功能,其中有一項是儲存使用者相關資料,這些資料主要分為五類:第一類是固定存放的資料,這類
MICRO SIM卡(SIM小卡)尺寸圖及剪卡圖解
pan avi watermark water http 輪廓 ack 壁紙 img 如今使用MICRO SIM卡的手機越來越多。近期剛剛買了一個手機到手才發現尼馬使用的是MICRO SIM卡。再去買剪卡器吧,十幾二十塊用一次就廢了,去營業廳吧。又比較遠,懶的出門。怎麽