给什么平台,跳什么舞

彩信接收流程 猜想:彩信通知信息->插入数据库->通知上层->自动/手动接收彩信

http://blog.csdn.net/hitlion2008/article/details/7166075

根据http://www.cnblogs.com/jimwind/archive/2013/05/28/3103701.html

插入数据库表中未下载的彩信大小为20480B,即为20KB,因此,应该从源头数据就错了。

先从Provider插入数据的地方查:

packages/providers/TelephonyProvider/src/com/android/providers/telephony/*

找pdu表的操作流程:

跟踪发现在MmsProvider.java insert(Uri uri, ContentValues values)中,取values的MESSAGE_SIZE仍是20480

next question, who call insert?

 

 

接收彩信,先接收短信,分析RIL层:

RIL.java

class RILReceiver implements Runnable public void run()

processResponse(Parcel p) type == RESPONSE_UNSOLICITED

processUnsolicited(Parcel p) case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS:

responseCdmaSms(Parcel p){ SmsMessage.newFromParcel(p, mPhoneId);}

SmsMessage.java

newFromParcel PHONE_TYPE_CDMA ==  activePhone

com.android.internal.telephony.cdma.SmsMessage.newFromParcel(p);

 

 

 

 

packages/apps/Mms/src/com/android/mms/transaction/TransactionService.java

private boolean processTransaction(Transaction transaction) -> transaction.process -> [ RetrieveTransaction | SendTransaction | ReadRecTransaction | NotificationTransaction ]

packages/apps/Mms/src/com/android/mms/transaction/RetrieveTransaction.java

public void process() -> new Thread(this).start(); -> run()

 

 

packages/apps/Mms/src/com/android/mms/transaction/TransactionService.java

protected int beginMmsConnectivity()  mConnMgr.startUsingNetworkFeature()

frameworks/base/core/java/android/net/ConnectivityManager.java

frameworks/base/services/java/com/android/server/ConnectivityService.java

public int startUsingNetworkFeature(int networkType, String feature, IBinder binder)

frameworks/base/core/java/android/net/MobileDataStateTracker.java

 

 

posted @ 2012-12-04 17:31  Jimwind  阅读(495)  评论(0)    收藏  举报
==============精通*学习*关注==============