Android源码REQ&BUG

2020/03/23 Android源码

工作中的 REQ&BUG 修改集合。

使用 Message 发送空白短信

  1. 修改发送界面判断当 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
            }
  1. 接着我们看到发送方法
    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

搜索

    C