工作中的 REQ&BUG 修改集合。
使用 Message 发送空白短信
- 修改发送界面判断当 EditText 为空时,发送按钮变为可发送状态。由于 GoogleMessage 是以 Apk 形式内置到系统,所以我们使用带有源码的 SprdMessage。
首先将 Message 安装到系统中,然后通过 SDKtools 的 monitor 获得发送界面的 View。
vendor/sprd/platform/packages/apps/Messaging …/src/com/android/messaging/ui/conversation/ComposeMessageView.java
//根据注释修改hasMessageText为true
if (MmsConfig.get(mHost.getConversationSelfSubId()).getFinalSendEmptyMessageFlag() == 0) { //only send sms with space message body
if (messageText != null && messageText.length() > 0) {
hasMessageText = true;
} else { //if message body don't include any char(eg. space), can't send it
//改为true
hasMessageText = false;
// if you want to send sms which message body don't include any char(eg. space), set this line to hasMessageText = true
}
- 接着我们看到发送方法
private void sendMessageInternal(final boolean checkMessageSize) {
...
if(TextUtils.getTrimmedLength(message.getMessageText()) == 0){
//这里有一个是否允许发送空白Message的Flag,可以添加Log打印发现是0
if((MmsConfig.get(mHost.getConversationSelfSubId()).getFinalSendEmptyMessageFlag() == 1)
|| (MmsConfig.get(mHost.getConversationSelfSubId()).getFinalSendEmptyMessageFlag() == 0 && message.getMessageText().length() > 0)) {
confirmSendEmptyMsg(message);
}
...
}
知道了 Flag 为 0,我们接着去找 getFinalSendEmptyMessageFlag()这个方法。
src/com/android/messaging/sms/MmsConfig.java
public int getFinalSendEmptyMessageFlag() {
//CarrierConfigValuesLoader.SEND_EMPTY_MESSAGE即"send_empty_message"
int value = mValues.getInt(CarrierConfigValuesLoader.SEND_EMPTY_MESSAGE,
CarrierConfigValuesLoader.SEND_EMPTY_MESSAGE_DEFAULT);
return value;
}
我们在 res 文件夹下 grep 搜索”send_empty_message”找到 mms_config.xml。
<int name="send_empty_message">0</int>//改成1