想要恢复运营商短信自然要先了解短信发送流程,这里推荐看 Android平台 短信发送流程剖析(含编码) 这篇,
这里附上里面的流程图
既然A820L的正常中文短信都是都是OK的,那么就可以判断信息的储存取出应该是没有问题的
再看看下一幅流程图,当然A820L的流程图未必跟这个完全一样,但我们可以根据这个来查找
跟拆分短信的关系应该也是不大的,所以主要看sendText这一流程
接下来要做的,就是要看这一流程中泛泰有没有加入一些稀奇古怪的变态代码(如一些运营商判断之类的东东)
将framework转为java查看,最后我们可以发现在com.android.internal.telephony.GsmSMSDispatcher.java中的sendText里加入了这些变态的代码
protected void sendText(String s, String s1, String s2, PendingIntent pendingintent, PendingIntent pendingintent1, String s3, int i)
{
int j = Log.e("GSM", "=== sendText ===!! ");
String s4;
com.android.internal.telephony.gsm.SmsMessage.SubmitPdu submitpdu;
if (SkyMsgConfig.isSKTVendor() || SkyMsgConfig.isLGVendor())
{
if (TextUtils.isEmpty(s3))
s4 = ((TelephonyManager)mContext.getSystemService("CHARSET=UTF-8")).getLine1Number();
else
s4 = s3;
} else
{
String s11 = TelephonyManager.getDefault().getLine1Number();
if (s3 == null)
{
s4 = s11;
int j1;
if (TextUtils.isEmpty(s4))
j1 = Log.e("GsmS