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"); <---屏蔽該語句即可
}