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

结伴旅游,一个免费的交友网站:www.jieberu.com

推推族,免费得门票,游景区:www.tuituizu.com

android 支持发送空短信的更多相关文章

  1. 基于android 社会的app短信分享 发送回调事件的实现

    摘要 前一段时间.由于项目的需要,采用ShareSDK该共享功能.其中包含 短信股吧.和呼叫系统,以分享要与成功处理服务器交互的消息后,(我不在乎在这里,收到.仅仅关心发出去了).可是ShareSDk ...

  2. Android 提示应用“正在发送大量短信”的解决办法

    . . . . . 临近过年了,又到了发送各类拜年短信的时刻了.虽然转发各类拜年短信已经显得越来越没年味,但是依然有很对人乐此不疲.为朋友送去祝福自然是好事,可是转发来的短信本身发送者就并没有投入太多 ...

  3. Android学习笔记之短信验证码的获取和读取

    PS:最近很多事情都拖拖拉拉的..都什么办事效率啊!!! 还得吐槽一下移动运营商,验证码超过五次的时候,直接把我的手机号封闭.真是受够了. 学习笔记: 1.Android之如何获取短信验证码. 2.如 ...

  4. 发送SMS短信(JSON) 转载

    http://blog.csdn.net/ldl22847/article/details/42553883 public   static string GetMobileConfByUserId( ...

  5. android打电话、发短信实现

    打电话: Intent intent = newIntent(Intent.ACTION_CALL,Uri.parse("tel:"+"156666666666" ...

  6. PHP 结合前端 ajax 爬取网站信息后, 向指定用户发送指定短信;

    <?php /** * Description * @authors Your Name (you@example.org) * # 根据时时彩的最新一期的号码, 判断如果为首尾同号则发送短信 ...

  7. 用Java通过串口发送手机短信

    用Java通过串口发短信其实很简单,因为有现成的类库供我们使用.有底层的类库,也有封装好一点的类库,下面我介绍一下在 Win32 平台下发送短信的方法. 如果你想用更底层的类库开发功能更强大的应用程序 ...

  8. 利用java实现的一个发送手机短信的小例子

    今天闲来无事,在微博上看到一个关于用java实现的一个发送手机短信的程序,看了看,写的不太相信,闲的没事,把他整理下来,以后可能用得着 JAVA发送手机短信,流传有几种方法:(1)使用webservi ...

  9. 四:java调接口实现发送手机短信验证码功能

    1.点击获取验证码之前的样式: 2.输入正确的手机号后点击获取验证码之后的样式: 3.如果手机号已经被注册的样式: 4.如果一个手机号一天发送超过3次就提示不能发送: 二:前台的注册页面的代码:reg ...

随机推荐

  1. 常用的 Git 命令,给你准备好了!

    分支操作: git branch 创建分支 git branch -b 创建并切换到新建的分支上 git checkout 切换分支 git branch 查看分支列表 git branch -v 查 ...

  2. 安装Composer与PsySH

    Windows安装Composer 需要开启 openssl 配置:打开 php 目录下的 php.ini,将 extension=php_openssl.dll 前面的分号去掉就可以了. https ...

  3. 富文本编辑器-Ueditor传值

    前两天研究了一下富文本编辑器Ueditor的使用和配置,并且我们已经可以正常的在页面上编辑内容到富文本编辑器中,那么我们如何将输入的内容传到数据库中呢 ? Listen carefully. 首先介绍 ...

  4. 加快ALTER TABLE 操作速度

    mysql的alter table操作的性能对于大表来说是个大问题.mysql大部分修改表结构操作的方法都是用新的结构创建一个 新表,从旧表中查出数据插入新表,然后在删除旧表.这样的操作很耗费时间,而 ...

  5. 附录2:CEL文件格式

    一.版本3 描述 version 版本号,设为3 Cols 列数 Rows 行数 TotalX 和Cols一样 TotalY 和Rows一样 OffsetX 无用,设置为0 OffsetY 无用,设置 ...

  6. C++ 对象的构造

    在类里面成员函数的初始值是多少了?(取决于创建对象的位置,是在堆.栈.还是在静态存储区中创建.) 例如: #include <stdio.h> class Test { private: ...

  7. Eclipce远程调试

    1.注意: root权限启动的进程不支持远程调试,也有很多隐患,支持最高权限,应用普通用户启动,又原先安装Tomcat是使用的root权限,普通用户对root安装的软件没有执行权限,可以修改相应权限, ...

  8. [转载]C++STL—vector的插入与删除

    来源:https://blog.csdn.net/duan19920101/article/details/50717748 vector::erase():从指定容器删除指定位置的元素或某段范围内的 ...

  9. new Date,Date.parse()传值

    获取时间: 获取1997年10月1号日期 new Date: 当使用 - 拼接年月日时将会使用UTC时区解析参数,会比北京时间快八小时. 当时用 / 拼接年月日时会使用北京的时区去解析参数,取到的是北 ...

  10. call,apply,bind的理解

    call,apply,bind均是用于改变this指向. 三者相似之处: 1:都是用于改变函数的this指向. 2:第一个参数都是this要指向的对象. 3:都可以通过后面的参数进行对方法的传参. l ...