android 在短信发送界面, 短信发送失败时,提示音不完整,会被中断

1. 当一条SMS到来, 此时SMS是unseen状态, 就会弹出Notification提示用户

2. 但假设处于同一个联系人的界面下, 用户会立马看到这条SMS, 此时这条SMS会被高速的标记为seen, 并取消Notification, 所以用户会听到铃声响了一下又中断了

3. Fail的短信也是相同的原理, 一開始这条fail的短信会被标记为unseen, 但同一时候由于处于同一个界面下, 已经看到了这条Fail的信息, 所以也会出现这个问题.

如今的情况是新来SMS有一个feature, 推断当前处于同一个联系人界面下时, 不再弹出Notification, 取而代之是轻声响铃一下, 但不弹出Notification. 假设你认可这个feature, 我们能够把这个feature扩展到fail的信息上.

你看Mms的code, 里面有个MessagingNotification.java, 当中一个方法是blockingUpdateNewMessageIndicator, 它里面有一句:

synchronized (sCurrentlyDisplayedThreadLock) {

我们能够把这段话copy到notifyFailed这种方法里,

也就是在

boolean enabled = NotificationPreferenceActivity.getNotificationEnabled(context);

if (!enabled) {

return;

}

之后,加上

NotificationProfile notiProf = getNotificationProfileByThreadId(context, threadId);

synchronized (sCurrentlyDisplayedThreadLock) {

Log.d(TAG, "newMsgThreadId = " + threadId + "sCurrentlyDisplayedThreadId = " + sCurrentlyDisplayedThreadId);

if (threadId > 0 && threadId == sCurrentlyDisplayedThreadId) {

if (DEBUG) {

Log.d(TAG, "blockingUpdateNewMessageIndicator: newMsgThreadId == " +

"sCurrentlyDisplayedThreadId so NOT showing notification," +

" but playing soft sound. threadId: " + threadId);

}

playInConversationNotificationSound(context, notiProf);

return;

}

}

同一时候,

MessagingNotification.java中,由于notifySendFailed()传递给notifyFailed()的threadId永远都是0。所以麻烦你确认一下这里是否已经改成了有拿到threadId的方式:

在Mms code中SmsReceiverService.java的函数messageFailedToSend()最后加入long threadId = MessagingNotification.getSmsThreadId(this, uri);就获得了正确的threadId。然后调用notifySendFailed(), 可能须要配合改动一下notifySendFailed()这种方法或者新定义一个方法.

时间: 2024-12-28 11:50:00

android 在短信发送界面, 短信发送失败时,提示音不完整,会被中断的相关文章

android 发送短信 如何做到一条一条的发送,只有在上一条发送成功之后才发送下一条短信

android发送短信截获上一条发送是否成功,然后再来发送下一条短信 1.问题:在项目中遇到如下要求:待发短信有N条,实现一条一条的发送并在上一条短信发送成功之后再来发送下一条. for(int i=0;i<3;i++){ sendSMS(10086, text1, i); } private void sendSMS(String toAddress, String body, Long id) { // ---sends an SMS message to another device---

Android软件开发之发送短信与系统短信库解析

今天我和同学们讨论一下Android平台下如何调用系统方法发送短信.接收短信.系统的短信库相关的问题.进入正题,我们先使用Eclipse工具模拟给自己的模拟器发送一条短信.在Eclipse下打开DDMS Incoming number: 这里须要填写的是发件人的手机号码,这里只能输入数字否则会无法发送. Message: 这里为发送的内容send: 上面两项都填写完毕点击发送键可以给模拟器发送短信. <ignore_js_op> 点击发送后,模拟器中就可以看到自己收到了一条消息 发件人的号码为

Android从普通发送和接收短信到对短信进行拦截

概述: 说实话,关于Android中对短信的一些相关操作是一个比较入门的东西.那我现在还要来写这一篇博客的原因只是因为现在开发中有相关内容,而又想将这些东西分享给更多的人来学习,同时在以后对Android系统的短信进行其他学习的时候也就放在这里做一个记录了,于是就写了这篇啰嗦的文章.如果你觉得这是一个不错的东西,欢迎收藏,以便在以后更方便地查看本人在此篇文章中更新的内容.下面我就从标题中的三个方面来对Android系统中的短信操作进行一个简单地学习. 短信的发送 由于Android中对短信发送方

android 发送短信 怎样做到一条一条的发送,仅仅有在上一条发送成功之后才发送下一条短信

android发送短信截获上一条发送是否成功,然后再来发送下一条短信 1.问题:在项目中遇到例如以下要求:待发短信有N条,实现一条一条的发送并在上一条短信发送成功之后再来发送下一条. for(int i=0;i<3;i++){ sendSMS(10086, text1, i); } private void sendSMS(String toAddress, String body, Long id) { // ---sends an SMS message to another device-

Android实现电话拨号器和短信发送器

电话拨号器和短信发送器是Android初学者很好的练习项目,今天就找了两个写得很不错的例子学习下 电话拨号器 实现原理:用户输入电话号码,当点击拨打的时候,由监听对象捕获,监听对象通过文本控件获取到用户输入的电话号码,由于系统已经实现了电话拨号功能,所以我们只需要调用这个功能就可以了. 步骤: 1.界面布局 2.编写Activity 3.使用意图过滤器激活电话拨号功能 4.添加电话服务权限(用手机的电话服务,要在清单文件AndroidManifest.xml中添加电话服务权限) 如图所示这三个控

Android开发之属于你的短信验证码(二)

君子欲讷于言而敏于行.-<论语> 最近身体有点不适,才注意到身体真的是最重要的,以后不管我们有多忙,一定要按时休息,坚持跑步,锻炼身体,做些颈椎的操等等,不要让我们挣的钱拿来看病,大家一起来坚持啊,不要让年轻蒙蔽了我们的双眼. 在Android开发之属于你的短信验证码(一)我们主要讲了聚合数据,以及使用聚合数据开发短信验证码的准备工作及配置,这一篇我们将带来完整的功能的实现,以及界面UI的实现.如有谬误欢迎批评指正,如有疑问欢迎留言,谢谢 首先我们来看下界面第一个界面 我们在这个界面输入手机号

Android黑科技,读取用户短信+修改系统短信数据库

安卓系统比起ios系统最大的缺点,相信大家都知道,就是系统安全问题.这篇博客就秀一波“黑科技”. 读取用户短信 Android应用能读取用户手机上的短信,相信已经不是什么新鲜事,比如我们收到的短信验证码,一些app马上就能自动获取并填上验证码,省去我们手动填写验证码.原理就是通过Android的ContentProvider组件间接访问系统的短信数据库,获取所有短信内容.下面来演示一下. 布局很简单,如下: 代码如下: public class MainActivity extends Acti

深度分析:Android中Mms设置页面更改短信中心号码流程

相关控件初始化方法:showSmscPref private void showSmscPref() { int count = MSimTelephonyManager.getDefault().getPhoneCount(); boolean airplaneModeOn = Settings.System.getInt(getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0) != 0; for (int i = 0; i < c

ADB 发送中文短信

最近好多朋友说adb 不支持发送中文的短信,也不知道为啥要用adb 来发送短信,昨天想到这个问题,所以修改了一下自己的adb,支持发送中文的短信了. adb shell am start -a android.intent.action.SENDTO -d sms:10086 --es sms_body 中文 下载地址: http://bcs.duapp.com/myandroidtools/AndroidAdb.exe 只公开可执行程序,不公开源代码,喷子们看清楚,不要乱喷. 需要更详细的可以