android 在簡訊發送介面, 簡訊發送失敗時,提示音不完整,會被中斷

來源:互聯網
上載者:User

標籤:android   io   os   java   sp   on   問題   log   cti   

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()這個方法或者新定義一個方法.

android 在簡訊發送介面, 簡訊發送失敗時,提示音不完整,會被中斷

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.