日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

彩信下载

發布時間:2023/11/27 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 彩信下载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
PduPersister.java loadParts 在發送mms前,會調用,就是將數據庫表中的數據轉成pdu用于發送;接收彩信時,也要調用。
據觀察,接收后,數據庫已經不正常。
設成不自動下載,僅收通知,查看log 發現沒有調用loadParts
點擊下載,調用loadParts
照最直觀的想法,應該是普通數據,準備發送時,轉成pdu,然后發送,收到pdu,轉成普通數據,存儲。讀取的時候直接讀取普通數據。
那么,這里下載時,為什么需要loadParts,這應該是創建pdu的過程啊?
仔細查看調用loadParts的loadFromDB,在PduHeaders.MESSAGE_TYPE_RETRIEVE_CONF和PduHeaders.MESSAGE_TYPE_SEND_REQ時,調用loadParts(msgId);
從log可以看到,無論發送,接收,下載彩信,都會調用loadFromDB,但是,數據都是用SqliteWrapper.query取出來的。
發送好理解,創建彩信時已經保存了,接收呢?在loadFromDB前已經存入數據庫了?
看接收流程:
SMSDispatcher.java handleMessage(Message msg){ EVENT_NEW_SMS: 調用CdmaSMSDispatcher.java 的dispatchMessage(SmsMessageBase smsb){
sms = (SmsMessage)smsb; sms.parseSms();teleService = sms.getTeleService(); teleService為SmsEnvelope.TELESERVICE_WAP就調用processCdmaWapPdu(sms, sms.messageRef, sms.getOrginationAddress()); 看log得知,這時,是接收不下載的流程。

知識小點:public abstract void sendOrderedBroadcast(Intent intent,String receiverPermission, BroadcastReceiver resultReceiver,Handler scheduler, int initialCode, String initialData,Bundle initialExtras);
這個廣播中receiverPermission設置后,只有這些權限的才能接收。

彩信接收不下載,存入pdu表,下載后,將彩信文字內容插入words

每次打開彩信,都會調用PduPersister load pdu use content type:
下載:RetrieveTransaction( ?550): RetrieveTransaction download from URL:http://10.234.45.180:80/... result pdu is:.... ...

下載:
NotificationTransaction.java
run()
byte[] retrieveConfData = getPdu(mContentLocation) -> HttpUtils.httpConnection(...) 下載數據
GenericPdu pdu = new PduParser(retrieveConfData).parse(mPhoneId);
NotificationTraction run() -> PduPersister p; p.persist(pdu, Inbox.CONTENT_URI,mPhoneId) -> persistPart 

PduPersister.java persistPart(PduPart part, long msgId) 將part中的Part.CHARSET Part.CONTENT_TYPE Part.FILENAME Part.NAME 等等取出來,存到指定的uri下面。


收彩信過程中,哪里觸發連接網絡? cmwap or ctwap
TransactionService.java
protected int beginMmsConnectivity() throws IOException{

}
ConnectivityService.java
public int startUsingNetworkFeature(int networkType, String feature, IBinder binder){
}

07-15 11:29:35收到彩信
main log
07-15 11:29:35.950   294   343 D harish  : SPRDRIL--- RIL_UNSOL_RESPONSE_NEW_SMS------
07-15 11:29:35.950   294   294 D WAP PUSH: Rx: 4506246170706c69636174696f6e2f766e642e7761702e6d6d732d6d65737361676500b487af848c8298504c646a526c373475707544008d9083687474703a2f2f3231312e3133362e3131322e38342f504c646a526c373475707544008805810303f48089178031353032313232373835332f545950453d504c4d4e008a808e0301927c
07-15 11:29:35.950   294   294 D WAP PUSH: Start new wap pdu
07-15 11:29:35.950   294   294 D WAP PUSH: Start parse
07-15 11:29:35.950   294   294 D WAP PUSH: mimeType= application/vnd.wap.mms-message
07-15 11:29:35.950   294   294 D WAP PUSH: binaryContentType 2= 62
07-15 11:29:35.950   215   325 E Parcel  : Reading a NULL string not supported here.
07-15 11:29:35.960   292   292 V ReceiverSmsState: onReceive action = android.provider.Telephony.WAP_PUSH_RECEIVED ,mimetype = application/vnd.wap.mms-message
07-15 11:29:35.960   292   292 D ReceiverSmsState: the sender number is : 15021227853
07-15 11:29:35.960   292   292 V ReceiverSmsState: number = 15021227853
07-15 11:29:35.960   292   292 V ReceiverSmsState: body is 
07-15 11:29:35.960   292   292 D CallFireWall: CheckIsBlockNumber(incoming = 15021227853 , isBlockMessage = true , isVideoCall = false)...
07-15 11:29:35.970  1147  1147 V PushReceiver: Received PUSH Intent: Intent { act=android.provider.Telephony.WAP_PUSH_RECEIVED typ=application/vnd.wap.mms-message cmp=com.android.mms/.transaction.PushReceiver (has extras) }
07-15 11:29:35.970   215   376 E Parcel  : Reading a NULL string not supported here.
07-15 11:29:35.970  1147  2043 D PushReceiver: doInBackground type:130
07-15 11:29:35.970   661   661 I MovieViewReceiver: Received  Intent: Intent { act=android.provider.Telephony.WAP_PUSH_RECEIVED typ=application/vnd.wap.mms-message cmp=com.cooliris.media/.MovieViewReceiver (has extras) }
07-15 11:29:35.980   294   294 D GaoMi   : SMS mResultReceiver
07-15 11:29:36.000  1147  2043 D PduPersister: persist start .....
system log
07-15 11:29:35.980   215   221 W ActivityManager: Permission Denial: receiving Intent { act=android.provider.Telephony.WAP_PUSH_RECEIVED typ=application/vnd.wap.mms-message (has extras) } to com.android.settings requires android.permission.RECEIVE_MMS due to sender com.android.phone (uid 1001)
07-15 11:29:36.200   215   221 D ConnectivityService: startUsingNetworkFeature for net 0: enableMMS0
07-15 11:29:36.200   215   221 D ConnectivityService: startUsing same Mms Feature as current mMmsFeatureState=CONNECTING
07-15 11:29:36.200   215   221 D ConnectivityService: if type is MMS,continue setup data call
07-15 11:29:36.200   215   221 D ConnectivityService: getMobileDataEnabled[0] returning true
07-15 11:29:36.200   215   221 D ConnectivityService: network = Mobile data state: CONNECTED
07-15 11:29:36.200   215   221 D ConnectivityService: ni.isConnectedOrConnecting()=true
07-15 11:29:36.200   215   221 D ConnectivityService: adding dns 211.136.112.50 for mobile
07-15 11:29:36.200   215   221 D ConnectivityService: get net.gprs.http-proxy value=
07-15 11:29:36.210   215   221 D ConnectivityService: adding dns 211.136.150.66 for mobile
07-15 11:29:36.210   215   221 D ConnectivityService: get net.gprs.http-proxy value=
07-15 11:29:36.210   215   221 D ConnectivityService: adding dns 211.136.150.66 for mobile
07-15 11:29:36.210   215   221 D ConnectivityService: get net.gprs.http-proxy value=
07-15 11:29:36.210   215   221 D ConnectivityService: adding dns 211.136.112.50 for mobile
07-15 11:29:36.210   215   221 D ConnectivityService: get net.gprs.http-proxy value=
07-15 11:29:36.210   215   221 D ConnectivityService: special network already active
 

GsmDataConnectionTracker.java 是一開機就創建的么?因為有創建sTracker = MpdpMsmsGsmDataConnectionTracker[PhoneFactory.getSimCount()];的動作

即會根據是否支持mpdp而創建,在onEnableNewApn時調用onEnableNewApnInternal()要根據sTracker中的對象類型,決定是否調用mpdp相關的函數。

MpdpMsmsGsmDataConnectionTracker.java

public void onEnableNewApnInternal(){

Log.i("GSM","***********************try to setup new pdp Connection");

trySetupData(reason);

}

如果當前是cmnet連接,則要創建cmwap連接。

protected boolean setupData(String reason){

? pdp = findFreePdp();

? pdp.connect(msg, apn);

? mActivePdp = pdp;

}

?

GsmDataConnection.java

protected void onConnect(ConnectionParams cp){

phone.mCM.setupDataCall(...);

}

?

?

?









轉載于:https://www.cnblogs.com/jimwind/p/3167091.html

總結

以上是生活随笔為你收集整理的彩信下载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。