android 支持发送空短信

method:
A) AP端修改:
1、将ComposeMessageActivity.java 中的 isPreparedForSending() 作如下修改(删掉的code也可以注释掉)
    private boolean isPreparedForSending() {
        if(isRecipientsEditorVisible())
          {
             String recipientText = mRecipientsEditor.getText()==null?””:mRecipientsEditor.getText().toString();
             Return mSimCount>0 && !TextUtils.isEmpty(recipientText);
}else{
   Return mSimCount>0;
}
      }
2、在SmsSingleRecipientSender.java 中加入
    import android.text.TextUtils;
   并且在函数public boolean sendMessage(long token, int simId)中,       " int messageCount = messages.size();"之前加入
        if (TextUtils.isEmpty(mMessageText)){
                 messages.add("");
        }
3、SmsMessageSender.java的修改queueMessage()方法
 去掉对mMessageText==null的判断。
 
B) Framework端需合入Patch,Patch中的改动如下:
alps\mediatek\frameworks-ext\base\telephony\java\android\telephony\gemini\GeminiSmsManager中的
isValidParameters(String destinationAddress, String parts, PendingIntent sentIntent)方法,
将此方法中判断parts为空的部分去掉即可。
        if (parts==null || parts.size()<1) {
            //throw new IllegalArgumentException("Invalid message body");  <---屏蔽该语句即可
        }
 
另外,如果在灭屏情况下,接收到信息,此时信息直接show,希望在DialogModeActivity 这个界面也能支持回复 空短信,除了上面的修改外,还需修改以下code:
将DialogModeActivity.java 这支文件,做如下修改:
1. 修改 private void updateSendButtonState() {  大约2242 行,将if(len>0) 修改为 if(len>=0), 修改后如下:
private void updateSendButtonState() {
        boolean enable = false;
        int len = mReplyEditor.getText().toString().length();
        MmsLog.d(TAG, "DialogModeActivity.updateSendButtonState(): len = " + len);
        if (mSendButton != null) {
            if (len >= 0) {  // modify for send blank sms
                MmsLog.d(TAG, "updateSendButtonState(): mSimCount = " + mSimCount);
2. 修改:
onPreMessageSent(){
   MmsLog.d(TAG, "DialogModeActivity.onPreMessageSent");
    if(mUris!= null && !mUris.isEmpty()){
       runOnUiThread(mResetMessageRunnable);
}
 
3. Runnable mResetMessageRunnable = new Runnable() {
public void run(){
if(mUris!= null && !mUris.isEmpty()){
MmsLog.d(TAG, "mResetMessageRunnable.run");
resetMessage();
}
}
};
注意:对于KK版本的手机,修改方法稍有变动,变动主要有两点:
1.SmsMessageSender.java的修改queueMessage()方法去掉对MessageText==null的判断====>
SmsMessageSender.java的修改queueMessage()方法去掉对(mMessageText == null) || mMessageText.isEmpty() 的判断
2.GeminiSmsManager.java KK中无此文件,改为修改===>
packages/apps/Mms/src/com/mediatek/encapsulation/android/telephony/gemini/EncapsulatedGeminiSmsManager.java
frameworks/opt/telephony/src/java/android/telephony/SmsManager.java
mediatek/frameworks/opt/telephony/src/java/com/mediatek/telephony/SmsManagerEx.java
修改方法同JB:
if (parts==null || parts.size()<1) {
            //throw new IllegalArgumentException("Invalid message body");  <---屏蔽该语句即可
 }

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。