版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
目錄要求能夠向指定的號(hào)碼發(fā)起呼叫;能夠監(jiān)視呼入事件,并得到呼入的號(hào)碼;嘗試對(duì)呼入事件進(jìn)行處理(顯示給用戶或者直接拒絕);通話記錄的獲取以及刪除;上述技術(shù)點(diǎn)都涉及到應(yīng)用程序安全授權(quán)問(wèn)題,研究Android在保證應(yīng)用程序安全上采用的方法。打電話流程點(diǎn)擊撥號(hào)盤撥打按鈕后,進(jìn)入通話的Phone包。此時(shí)首先進(jìn)入的函數(shù),該類是一個(gè)Activity。由activity的生命周期可知,第一次進(jìn)入時(shí)應(yīng)調(diào)用onCreate()函數(shù)。(在該類中也只實(shí)現(xiàn)了這個(gè)函數(shù)。)解析一下這個(gè)函數(shù):首先獲取Intent對(duì)象,獲取撥出的號(hào)碼。接著判斷號(hào)碼是否為緊急號(hào)碼,如果是緊急號(hào)碼,將callNow變量賦值為true,啟動(dòng)InCallScreen,并發(fā)送廣播。而在receiver里面判斷callNow為ture就直接finish,而不再重復(fù)啟動(dòng)InCallScreen;如果不是緊急號(hào)碼,將callNow變量賦值為false,發(fā)送廣播“”。2廣播發(fā)送后OutgoingCallReceiver將會(huì)收到該息。該類是一個(gè)內(nèi)部類,在類OutgoingCallBroadcaster里面,作用是接收OutgoingCallBroadcaster發(fā)送的廣播,判斷是否已經(jīng)啟動(dòng)InCallScreen。沒(méi)有啟動(dòng)的話就進(jìn)行一些初始化,如:對(duì)OTA進(jìn)行初始化。接收到廣播之后,從Intent里面取出電話號(hào)碼及其URi。然后,設(shè)置Intent為ACTION_CALL,并帶上號(hào)碼和uri。啟動(dòng)InCallScreen。關(guān)閉該Activity。OTA:Over-the-AirTechnology空中下載技術(shù),是通過(guò)移動(dòng)通信(GSM或CDMA)的空中接口對(duì)SIM卡數(shù)據(jù)及應(yīng)用進(jìn)行遠(yuǎn)程管理的技術(shù)。空中接口可以采用WAP、GPRS、CDMA1X及短消息技術(shù)。OTA技術(shù)的應(yīng)用,使得移動(dòng)通信不僅可以提供語(yǔ)音和數(shù)據(jù)服務(wù),而且還能提供新業(yè)務(wù)下載。GSM:GlobalSystemforMobileCommunications,中文為全球移動(dòng)通訊系統(tǒng),俗稱"全球通"。CDMA:CodeDivisionMultipleAccess,又稱碼分多址,是在無(wú)線通訊上使用的技術(shù),CDMA允許所有的使用者同時(shí)使用全部頻帶,并且把其他使用者發(fā)出的訊號(hào)視為雜訊,完全不必考慮到訊號(hào)碰撞(collision)的問(wèn)題。CDMA的優(yōu)點(diǎn)包括:CDMA中所提供的語(yǔ)音編碼技術(shù),其通話品質(zhì)比目前的GSM好,而且可以把用戶對(duì)話時(shí)周圍環(huán)境的噪音降低,使通話更為清晰。3——負(fù)責(zé)通話的那一個(gè)界面該類extends了Acitivity,并且implements了OnClickListener,OnTouchListener和OnQueryCompleteListener。該類主要是負(fù)責(zé)通話的那一個(gè)界面,并且還負(fù)責(zé)菜單項(xiàng)各種按鍵事件和觸摸時(shí)間的處理。同時(shí)本類還復(fù)寫的finish()方法,所以一般不會(huì)被finish掉,調(diào)用這個(gè)方法時(shí)它又把自己放回棧中。InCallScreen可以接收這個(gè)Intent并啟動(dòng)。onCreate(第一次)callScreenOnCreate獲得通話界面被創(chuàng)建的時(shí)間。PhoneApp喚醒后臺(tái)的服務(wù)程序。判斷當(dāng)前的通話狀態(tài)(IDLE=沒(méi)有通話行為,RINGING=正在通話或呼叫等待,OFFHOOK=Thephoneisoffhook.Atleastonecallexiststhatisdialing,activeorholdingandnocallsareringingorwaiting.),如果正在通話,不會(huì)出現(xiàn)鍵盤鎖。接著設(shè)置mPhoneandmForegroundCall/mBackgroundCall/mRingingCall。getBluetoothHandsfree設(shè)置藍(lán)牙耳機(jī),如果存在藍(lán)牙耳機(jī),則安裝該設(shè)備。initInCallScreen加載各種view組建。對(duì)通話的各種狀態(tài)進(jìn)行廣播。(registerForPreciseCallStateChanged,registerForDisconnect,registerForMmiInitiateregisterForMmiComplete,registerForCallWaiting,registerForSuppServiceFailed,registerForCdmaOtaStatusChange)internalResolveIntent判斷是否使用了OTA技術(shù),通過(guò)該判斷設(shè)置通話界面的樣式。callScreenCreated記錄通話界面創(chuàng)建完成后的時(shí)間onNewIntent(非第一次)。我們重新啟動(dòng)一個(gè)Intent時(shí)調(diào)用該函數(shù)。由于我們圍繞唯一的一個(gè)InCallScreen實(shí)例來(lái)完成通過(guò)的這個(gè)過(guò)程,那么除了第一次被創(chuàng)建的InCallScreen,只要有來(lái)電或者去電,該程序就會(huì)發(fā)生。如果InCallScreen已經(jīng)在前臺(tái),該程序也會(huì)發(fā)生。setIntent保存該Intent,以至于將來(lái)我們可以獲得該ernalResolveIntentonResume進(jìn)行一些初始化操作,如:獲取一個(gè)PhoneApp對(duì)象,解開(kāi)KeyguardNotification的statusBar給Disable。還內(nèi)置了一個(gè)Handler可以回調(diào)處理一些事件,比如:PHONE_STATE_CHANGED,PHONE_DISCONNECT,EVENT_HEADSET_PLUG_STATE_CHANGED。同時(shí)有一個(gè)獨(dú)立的BroadcastReceiver處理ACTION_HEADSET_PLUG,比如插入耳機(jī)等。首先對(duì)鎖屏情況下的來(lái)電除了處理。disableStatusBar當(dāng)正在通話界面時(shí),使得狀態(tài)欄可用。setIgnoreTouchUserActivity忽略通話過(guò)程中無(wú)意的觸碰事件,使得這些無(wú)意的觸碰不會(huì)阻止設(shè)備進(jìn)入休眠。registerReceiver監(jiān)聽(tīng)廣播startDialerSession當(dāng)在前臺(tái)是,保持一個(gè)dialersession。首先判斷時(shí)候需要播放本地鈴聲,如果需要,則判斷雙音多頻是否可用,如果可用,則創(chuàng)建一個(gè)聲音播放器。isBluetoothAudioConnected做一個(gè)是否藍(lán)牙連接的判斷。如果是cdma通話,則初始化OTA狀態(tài),進(jìn)而如果是采用了OTA,則設(shè)置InCallScreenMode為OTA通話模型。clearDisconnected在檢查該通話狀態(tài)之前,切斷其他網(wǎng)絡(luò)連接。syncWithPhoneState同步通話界面與Phone的當(dāng)前狀態(tài)。如果沒(méi)有同步成功,則dismissAllDialogs();結(jié)束當(dāng)前的所以通話,endInCallScreenSession();關(guān)閉通話界面的顯示。updateWakeState設(shè)置基于當(dāng)前Phone的喚醒狀態(tài)和屏幕超時(shí),以及通話界面的當(dāng)前狀態(tài)。enableTouchLock當(dāng)onresume時(shí)“觸摸鎖“疊加是不可見(jiàn)的,尤其是這個(gè)檢查可確保用戶通話按MUNU來(lái)喚醒屏幕后將不會(huì)被鎖。但如果撥號(hào)盤是打開(kāi)的,而又需要通話計(jì)時(shí),則造就了“觸摸鎖“覆蓋。4——該類對(duì)通話各個(gè)時(shí)間點(diǎn)進(jìn)行記錄。該類對(duì)通話各個(gè)時(shí)間點(diǎn)進(jìn)行記錄。staticlongsTimeCallScreenRequested;/(this,PHONE_UNKNOWN_CONNECTION_APPEARED,null);/*當(dāng)以前未跟蹤non-ringing/waiting連接時(shí)Notifies。這可能是由于一些其他實(shí)體(如SIM卡應(yīng)用)發(fā)起呼叫。*/(this,PHONE_INCOMING_RING,null);/*當(dāng)有來(lái)電話響鈴時(shí)Notifies。收到的訊息是:willbeanAsyncResult,=obj,=aConnection.*/另外如果是CDMA通訊類型,還執(zhí)行:(this,EVENT_OTA_PROVISION_CHANGE,null);/*當(dāng)CDMAOTA提供者位置改變時(shí)注冊(cè)notification*/(this,PHONE_CDMA_CALL_WAITING,null);/*當(dāng)CDMA呼叫等待時(shí)注冊(cè)notification*/(this,PHONE_STATE_DISPLAYINFO,null);/*為來(lái)自網(wǎng)絡(luò)顯示信息通知注冊(cè)。將包含一個(gè)AsyncResult。將是一個(gè)SuppServiceNotification實(shí)例。*/(this,PHONE_STATE_SIGNALINFO,null);/*為來(lái)自網(wǎng)絡(luò)的信號(hào)信息通知注冊(cè)。將包含一個(gè)AsyncResult。將是一個(gè)SuppServiceNotification實(shí)例。*/(this,PHONE_ENHANCED_VP_ON,null);/*當(dāng)sInCallVoicePrivacy可用時(shí)注冊(cè)notification*/(this,PHONE_ENHANCED_VP_OFF,null);/*當(dāng)sInCallVoicePrivacy不可用時(shí)注冊(cè)notification*/(this,PHONE_CDMA_FWD_BURST_DTMF,null);/*為CDMAForwardBurstDTMF的事件通知設(shè)置處理程序*/(this,PHONE_CDMA_FWD_CONT_DTMF_START,null);/*為CDMAForwardBurstDTMF啟動(dòng)的事件通知設(shè)置處理程序*/(this,PHONE_CDMA_FWD_CONT_DTMF_STOP,null);/*為CDMAForwardBurstDTMF停止的事件通知設(shè)置處理程序*/如果是GSM類型,則執(zhí)行:(this,PHONE_RINGBACK_TONE,null);/*當(dāng)帶外回鈴音(專業(yè)術(shù)語(yǔ)CRBT:COLORRINGBACKTONE,回鈴音定義:當(dāng)別人打電話給您時(shí),他(她)聽(tīng)到的聲音叫做回鈴音?;剽徱羰侵笓艽螂娫挼暮艚蟹剿?tīng)到的對(duì)方電話的聲音,當(dāng)撥通電話時(shí)聽(tīng)到通話音,通常是長(zhǎng)音;而當(dāng)對(duì)方占線時(shí)則聽(tīng)到忙音,聲音短促,有時(shí),忙音會(huì)變成人聲語(yǔ)音提示。)時(shí)Notifies。收到的訊息是:將是一個(gè)AsyncResult,=obj,=true表示開(kāi)始播放回鈴音;=false表示停止。*/(this,PHONE_RESEND_MUTE,null);/*為復(fù)位上行靜音狀態(tài)成上行音頻注冊(cè)處理程序。*/整個(gè)類由函數(shù)handleMessage串起來(lái)。電話部分自動(dòng)撥號(hào),判斷號(hào)碼正確性與否,安全機(jī)制。撥打電話過(guò)程:一自動(dòng)撥號(hào)是,另一種是(只是到按鍵盤的界面,需要再手動(dòng)撥打)以下為CALL的代碼Xml代碼
<!--
添加撥出電話的權(quán)限
-->
<uses-permission
android:name="">
Java代碼
Intent
intent=new
Intent("",
("tel:"
+
inputStr));
startActivity(intent);
判斷電話接通狀態(tài)刪除通話記錄負(fù)責(zé)存放呼叫記錄的內(nèi)容提供者源碼在
ContactsProvider
項(xiàng)目下:源碼路徑:
com\android\providers\contacts\使用到的數(shù)據(jù)庫(kù)在:
/data/data/
表名:calls
呼叫記錄有三種類型:
來(lái)電:
(常量值:1)
已撥:(常量值:2)
未接:(常量值:3)
查看源碼中的聲明:
<providerandroid:name="CallLogProvider"
android:authorities="call_log"
android:syncable="false"android:multiprocess="false"
android:readPermission=""
android:writePermission="">
</provider>3.需要聲明的權(quán)限
<uses-permissionandroid:name=""/>
<uses-permissionandroid:name=""/>4.
系統(tǒng)的通話記錄,是通過(guò)
ContentProvider
來(lái)對(duì)外共享的5.Uri
:
等價(jià)于:("");6.
查詢出所有記錄
ContentResolverresolver=getContentResolver();
null,null,newString[]{""},null);7.
查詢某一個(gè)聯(lián)系人的所有記錄(按電話號(hào)碼)
null,"number="
,newString[]{""},null);8.
查詢某一個(gè)聯(lián)系人的所有未接電話記錄(按電話號(hào)碼)
null,"number=
andtype=3",newString[]{""},null);8.
刪除某聯(lián)系人最近的一次來(lái)電/*
本代碼因?yàn)樵?/p>
Activity
中,所以可以直接調(diào)用
getContentResolver()。這個(gè)方法實(shí)際上是
Context
中定義的。
*/
ContentResolver
resolver
=
getContentResolver();
/*
這里涉及到內(nèi)容提供者的知識(shí),其實(shí)這里是直接在操作
Android
的數(shù)據(jù)庫(kù),十分痛苦
*/
Cursor
cursor
=
new
String[]{"_id"},
"number=
and
(type=1
or
type=3)",
new
String[]{""},
"_id
desc
limit
1");
if())
{
int
id
=
(0);
"_id="
,
new
String[]
{id
+
""});
}
短信部分Android設(shè)備接收到的SMS是以pdu形式的(protocoldescriptionunit)(計(jì)算機(jī)網(wǎng)絡(luò)的概念)(APDUisa"protocoldiscriptionunit",whichistheindustryformatforanSMSmessage.becauseSMSMessagereads/writesthemyoushouldn'tneedtodisectthem.Alargemessagemightbebrokenintomany,whichiswhyitisanarrayofobjects.)這個(gè)類可以儲(chǔ)存SMS的相關(guān)信息,我們也可以從接收到的pdu中創(chuàng)建新的SmsMessage實(shí)例SmsMessage的使用比較特殊,并不直接實(shí)例化,而是利用靜態(tài)方法getDefault()獲得smsmanager對(duì)象發(fā)送短信用戶權(quán)限設(shè)置<uses-permissionandroid:name=""></uses-permission>發(fā)送部分 PendingIntentpi=(this,0,newIntent(this,,0); SmsManagersms=()); (phoneno,null,context,pi,null);publicvoidsendTextMessage(StringdestinationAddress,StringscAddress,Stringtext,PendingIntentsentIntent,PendingIntentdeliveryIntent)destinationAddress:
收件人地址scAddress:
短信中心號(hào)碼,空為默認(rèn)中心號(hào)碼sentIntent:當(dāng)消息發(fā)出時(shí),成功或者失敗的信息報(bào)告通過(guò)PendingIntent來(lái)廣播。如果該參數(shù)為空,則發(fā)信程序會(huì)被所有位置程序檢查一遍,這樣會(huì)導(dǎo)致發(fā)送時(shí)間延長(zhǎng)。deliveryIntent:當(dāng)消息發(fā)送到收件人時(shí),該P(yáng)endingIntent會(huì)被廣播。pdu數(shù)據(jù)在狀態(tài)報(bào)告的extendeddata(“pdu”)中。拋出IllegalArgumentException
如果收件人或者信息為空。出錯(cuò)時(shí)考慮是不是text長(zhǎng)度太長(zhǎng)的問(wèn)題?。〕赃^(guò)兩次虧了。。。==發(fā)送彩信刪除短信未嘗試packageclassDeleteMessage{privatePegaSocket2deleteMessage;privateintidelete;privateCursoreventCursor,remindersCursor;privateint[]column=newint[1];privateString[]threadid=newString[1];privateCursorquerymessage;DeleteMessage(PegaSocket2deleteMessage,intid){=deleteMessage;idelete=id;StringuriInbox="";String[]projection=newString[]{"thread_id"};UriuriSms=(uriInbox);Stringwhere="_id="+(idelete);querymessage=().query(uriSms,projection,where,null,null);}privatevoidMoveToFirst(){();}publicintDeleteShortMessage(){if()!=0){MoveToFirst();threadid[0]="thread_id";column[0]=("thread_id");threadid[0]=(column[0]);elete((""+threadid[0]),"_id="+idelete,null);("delete_number",(number));if(number!=0)return1;elsereturn0;}else{("number","cann'tfinethemessage!");return0;}}}通過(guò)主鍵id來(lái)找到他對(duì)應(yīng)的thread_id。然后進(jìn)行刪除就可以了2:監(jiān)聽(tīng)短信收發(fā)兩種方式利用廣播缺點(diǎn):查看BroadReceiversdkreference,可以了解到所有的BroadReceiver對(duì)短信的接收是無(wú)順序的狀態(tài),即使是使用了Orderedbroadcasts對(duì)于同等優(yōu)先級(jí)別的BroadReceiver,也會(huì)產(chǎn)生無(wú)順序的行為。流程理解:用bundle從中得到,再用object[]從("pdus")得到,此時(shí)為pdu形式,接著用((byte[])pdusObj[i])一位位的讀到SmsMessage[]msg中(每個(gè)i表示的是一條短信,此時(shí)為smsmessage格式),接著再對(duì)每個(gè)msg[i].getMessageBody()得到短信的內(nèi)容stringpublicclassreceiveextendsBroadcastReceiver{StringreceiveMsg="";publicvoidonReceive(Contextcontext,Intentintent){SmsMessage[]msg=null;if().equals("")){Bundlebundle=();if(bundle!=null){Object[]pdusObj=(Object[])("pdus");,前面一定有存入以這個(gè)字符串一個(gè)鍵值對(duì)的形式儲(chǔ)存了values!把pdus理解為一種標(biāo)識(shí)符!msg=newSmsMessage[];for(inti=0;i<;i++)msg[i]=((byte[])pdusObj[i]);}for(inti=0;i<;i++){StringmsgTxt=msg[i].getMessageBody();
if("Testing!")){(context,"success!",.show();return;}else{(context,msgTxt,.show();return;}}return;}}利用數(shù)據(jù)庫(kù)uery(uriSms,null,null,null,null);while()){
elete(uri),null,null);
}
}}REMEBER:mustrequestfollowingpermission1)ReadSMS
<uses-permssionandroid:name=""/>2)Delete/Modify/SendSMS
<uses-permssionandroid:name=""/>in
1.publicclassScreenTestextendsActivity{
2.
3.
classSmsContentextendsContentObserver{
4.
privateCursorcursor=null;
5.
publicSmsContent(Handlerhandler){
6.
super(handler);
7.
}
8.
9.
/**
10.
*@Description當(dāng)短信表發(fā)送改變時(shí),調(diào)用該方法
11.
*
需要兩種權(quán)限
12.
*
讀取短信
13.
*
寫短信
14.
*@AuthorSnake
15.
*@Date2010-1-12
16.
*/
17.
@Override
18.
publicvoidonChange(booleanselfChange){
19.
(selfChange);
21.
cursor=managedQuery(""),newString[]{"_id","address","read"},"address=andread=",newString[]{"","0"},"datedesc");
23.
24.
if(cursor!=null){
25.
ContentValuesvalues=newContentValues();
26.
("read","1");
();
28.
while()){
29.
getContentResolver().update(""),values,"_id="
,newString[]{""+(0)});
31.
();
32.
}
33.
}
34.
}
35.
}
36.
37.
/**Calledwhentheactivityisfirstcreated.*/
38.
@Override
39.
publicvoidonCreate(BundlesavedInstanceState){
40.
(savedInstanceState);
41.
setContentView
42.
SmsContentcontent=newSmsContent(newHandler());
43.
().registerContentObserver(""),true,content);
}
}
收到短信不頂欄通知獲取短信內(nèi)容android的短信都保存在數(shù)據(jù)庫(kù)中,通過(guò)操作數(shù)據(jù)庫(kù)即可獲得短信的信息用android數(shù)據(jù)庫(kù)編程嗎,直接調(diào)用provider很方便的。短信的是,收件箱是
收件箱
已發(fā)送(大多數(shù)在這里)
草稿
發(fā)件箱(是要發(fā)的)
發(fā)送失敗
待發(fā)送列表在模擬器上Outbox沒(méi)有查詢到數(shù)據(jù),在模擬器上找了老半天也沒(méi)找到發(fā)件箱,很郁悶。
數(shù)據(jù)庫(kù)中sms相關(guān)的字段如下:
_id
一個(gè)自增字段,從1開(kāi)始thread_id
序號(hào),同一發(fā)信人的id相同address
發(fā)件人手機(jī)號(hào)碼person
聯(lián)系人列表里的序號(hào),陌生人為null
date
發(fā)件日期protocol
協(xié)議,分為:
0
SMS_RPOTO,
1
MMS_PROTO
read
是否閱讀
0未讀,
1已讀
status
狀態(tài)
-1接收,0
complete,
64
pending,
128
failed
type
ALL
=0;
INBOX
=1;
SENT
=2;
DRAFT
=3;
OUTBOX=4;
FAILED=5;
QUEUED=6;
body
短信內(nèi)容service_center
短信服務(wù)中心號(hào)碼編號(hào)subject
短信的主題reply_path_present
TP-Reply-Pathlocked
_id=490thread_id=31address=92person=null3date=4protocol=05read=06status=-17type=18reply_path_present=09subject=null10body=ertyyhrtsh11service_center=null12locked=013error_code=014seen=015檢索數(shù)據(jù)方法
Uriuri=("");
Cursorcur=(uri,null,null,null,null);
if()){
do{
for(intj=0;j<();j++){
info="name:"+(j)+"="+(j);
("====>",info);
}
}while());
}managedQuery最終也要將參數(shù)轉(zhuǎn)換為SQL語(yǔ)句向SQLite發(fā)送消息,因此參數(shù)跟SQL語(yǔ)句很類似,所以可以在查詢字段中加入SQL函數(shù),比如newString[]projection=newString[]{"count(*)ascount"}等等。
managedQuery中的參數(shù)依次為uri,
查詢字段
查詢字段數(shù)組,也可以將所有需要查詢的字段放入一個(gè)字符內(nèi)
比如newprojection[]{"_id","thread_id"}和newprojection[]{"_id,thread_id"}是一致的跟SQL一樣,字段名不區(qū)分大小寫
條件
不帶Where的SQL條件字符,如果有參數(shù)則用替代,比如"_id=Andthread_id=Ortype='1'"
條件中的參數(shù)
參數(shù)字符數(shù)組,跟上述的條件一一對(duì)應(yīng)
排序
不帶Orderby排序字符串,比如_iddesc,type
如果參數(shù)為null,SQL中查詢字段為“*”,相關(guān)的條件為空白getContentResolver()還可以用getContentResolver()獲得一個(gè)ContentResolver,
getContentResolver().query()同樣返回一個(gè)Cursor對(duì)象,參數(shù)跟managedQuery一致。
不過(guò)用ContentResolver對(duì)象去更新、刪除和插入一條數(shù)據(jù)時(shí)報(bào)SecurityException??磥?lái)沒(méi)有權(quán)限,在中加入權(quán)限:<uses-permissionandroid:name=""></uses-permission>
然后刪除短信:().delete(""),"_id="
,newString[]{"3"});
刪除成功。Url中
替換成
也成功,但是其它url時(shí)程序報(bào)錯(cuò),比如"sms",null,SMS_ALL);("sms","#",SMS_ALL_ID);("sms","inbox",SMS_INBOX);("sms","inbox/#",SMS_INBOX_ID);("sms","sent",SMS_SENT);("sms","sent/#",SMS_SENT_ID);("sms","draft",SMS_DRAFT);("sms","draft/#",SMS_DRAFT_ID);("sms","outbox",SMS_OUTBOX);("sms","outbox/#",SMS_OUTBOX_ID);("sms","undelivered",SMS_UNDELIVERED);("sms","failed",SMS_FAILED);("sms","failed/#",SMS_FAILED_ID);("sms","queued",SMS_QUEUED);("sms","conversations",SMS_CONVERSATIONS);("sms","conversations/*",SMS_CONVERSATIONS_ID);("sms","raw",SMS_RAW_MESSAGE);("sms","attachments",SMS_ATTACHMENT);("sms","attachments/#",SMS_ATTACHMENT_ID);("sms","threadID",SMS_NEW_THREAD_ID);("sms","threadID/*",SMS_QUERY_THREAD_ID);("sms","status/#",SMS_STATUS_ID);("sms","sr_pending",SMS_STATUS_PENDING);("sms","sim",SMS_ALL_SIM);("sms","sim/#",SMS_SIM);其中,delete方法中支持的協(xié)議為:SMS_ALL
根據(jù)參數(shù)中的條件刪除sms表數(shù)據(jù)SMS_ALL_ID
根據(jù)_id刪除sms表數(shù)據(jù)SMS_CONVERSATIONS_ID
根據(jù)thread_id刪除sms表數(shù)據(jù),可以帶其它條件SMS_RAW_MESSAGE
根據(jù)參數(shù)中的條件刪除raw表SMS_STATUS_PENDING
根據(jù)參數(shù)中的條件刪除sr_pending表SMS_SIM
從Sim卡上刪除數(shù)據(jù)試一下SMS_CONVERSATIONS_ID:"
",刪除thread_id="3",_id="5"的數(shù)據(jù)
在eclipse中的EmulatorControl中,以13800給模擬器發(fā)送三條數(shù)據(jù),然后以13900發(fā)送一條
().delete(""),"_id="
,newString[]{"5"});
成功刪除一條數(shù)據(jù)。
在數(shù)據(jù)庫(kù)中每個(gè)發(fā)送者的thread_id雖然一樣,但不是固定的,如果把一個(gè)發(fā)送者的全部數(shù)據(jù)刪除掉,
然后換一個(gè)新號(hào)碼發(fā)送短信時(shí),thread_id是以數(shù)據(jù)庫(kù)中最大的id+1賦值的。
update支持的協(xié)議有很多:SMS_RAW_MESSAGE
SMS_STATUS_PENDING
SMS_ALL
SMS_FAILED
SMS_QUEUED
SMS_INBOX
SMS_SENT
SMS_DRAFT
SMS_OUTBOX
SMS_CONVERSATIONS
SMS_ALL_ID
SMS_INBOX_ID
SMS_FAILED_ID
SMS_SENT_ID
SMS_DRAFT_ID
SMS_OUTBOX_ID
SMS_CONVERSATIONS_ID
SMS_STATUS_ID
以SMS_INBOX_ID測(cè)試一下:
ContentValuescv=newContentValues();
("thread_id","2");
("address","00000");
("person","11");
("date","");
().update(""),cv,null,null);
太強(qiáng)了,連thread_id都可以修改。
insert支持的協(xié)議:SMS_ALL
SMS_INBOX
SMS_FAILED
SMS_QUEUED
S
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年山西大專任教師招聘116人備考題庫(kù)帶答案詳解
- 2025年環(huán)磨科技控股(集團(tuán))社會(huì)招聘?jìng)淇碱}庫(kù)11人備考題庫(kù)及答案詳解一套
- 2025年嘉峪關(guān)市教育系統(tǒng)公開(kāi)招聘公費(fèi)師范畢業(yè)生和小學(xué)全科型教師37人備考題庫(kù)及1套完整答案詳解
- 2025年北海海關(guān)綜合技術(shù)服務(wù)中心招聘非編人員5人備考題庫(kù)及1套完整答案詳解
- 2025年順德區(qū)西山小學(xué)財(cái)務(wù)崗位招聘?jìng)淇碱}庫(kù)含答案詳解
- 場(chǎng)營(yíng)銷學(xué)試卷及參考答案
- 2025年中國(guó)信安(電子六所)中層管理崗人才招聘?jìng)淇碱}庫(kù)及完整答案詳解一套
- 國(guó)聯(lián)(雄安)教育科技有限公司石家莊事業(yè)部2025年公開(kāi)招聘?jìng)淇碱}庫(kù)含答案詳解
- 2025年中國(guó)人民大學(xué)黨政辦公室(機(jī)關(guān)黨委、政策研究室)現(xiàn)面向社會(huì)公開(kāi)招聘非事業(yè)編制工作人員備考題庫(kù)含答案詳解
- 2025年西安外國(guó)語(yǔ)大學(xué)第二批專任教師崗位公開(kāi)招聘34人的備考題庫(kù)及完整答案詳解一套
- 垃圾壓縮站運(yùn)營(yíng)維護(hù)管理標(biāo)準(zhǔn)方案
- 婦科TCT培訓(xùn)課件
- 軍事理論-綜合版(新版)知到智慧樹答案
- 護(hù)理禮儀情景劇課件模板
- 基因克隆技術(shù)課件教案
- 類風(fēng)濕性關(guān)節(jié)炎康復(fù)護(hù)理
- 變電站工作票培訓(xùn)
- 2025-2030中國(guó)航空裝備產(chǎn)業(yè)計(jì)量測(cè)試行業(yè)市場(chǎng)發(fā)展分析及前景趨勢(shì)與投資發(fā)展戰(zhàn)略研究報(bào)告
- 2025年中國(guó)三維立體顯示器行業(yè)市場(chǎng)全景分析及前景機(jī)遇研判報(bào)告
- 貴州人民版三年級(jí)勞動(dòng)上冊(cè)全冊(cè)教案
- 汽車服務(wù)行業(yè)勞務(wù)派遣協(xié)議范文
評(píng)論
0/150
提交評(píng)論