2015-09-26 48 views
3

我正在處理處理短信的應用程序。這是個人應用程序,我不打算髮布它,但它基本上允許我通過互聯網在衆多設備之間共享我的短信(和電話號碼)。這是一個有趣的學習項目,作爲第一個應用程序,我做了很多。Android - 以編程方式禁用短信通知

然而惱人的是,我的設備接收消息時獲取文本的消息彈出。我喜歡它,當我使用該設備時,當我不打算使用該設備時,我總是可以進入選項並禁用彈出窗口,但我是一個非常非常健忘的人,並且將其重新開啓不會總是發生。然後我永遠不會回覆郵件。

基本上我想以編程方式中斷(甚至不通知)文本消息的我的默認消息應用程序,但我還是希望它在我的消息歷史記錄。所以這個消息不能被「丟棄」。這應該只在我的應用程序服務正在運行時發生。

我已經通過Android API搜索相當長的一段時間,我只是似乎無法弄清楚這一點,是有可能,如果這樣,可以在API中鏈接我到適當的地方開始?

回答

1

我想以編程方式中斷(甚至不通知)我的默認短信應用程序的文字信息...

這是不可能的。

通過「中斷」假設你的意思,以防止默認的短信應用從發行的通知,你再不能用默認的應用程序比你可以與你不控制任何其他應用程序做到這一點。

此外,由於默認的短信應用程序響應SMS_DELIVER_ACTION廣播,並且它是唯一接收此廣播的應用程序,所以不可能「不通知」傳入消息的默認應用程序。即使可以這樣做,您的應用甚至不會有機會中止廣播。

(在KitKat之前的版本中,通常可以爲SMS_RECEIVED_ACTION廣播註冊一個高優先級的接收器,然後在本地SMS應用程序收到廣播之前中止廣播,這就是rajan ks的答案提到的。 )

...但是我仍然希望它記錄在我的消息歷史記錄中。

默認的SMS應用程序負責將所有傳入消息寫入提供程序。即使您能夠阻止默認應用程序接收傳入消息,您的應用程序也必須自己編寫消息。這也不是真的可行,因爲默認應用程序是唯一具有對提供程序的標準寫入訪問權限的應用程序。

+0

誠實地說,這是非常令人沮喪的。感謝您的洞察力。猜猜我只需要處理一次又一次殺死400個彈出窗口。 – Hobbyist

+1

是的,在KitKat中引入的變化使得如果你的應用程序不是默認的,那麼使用SMS來做某些事情是困難的或不可能的。你可以隨時編寫自己的完整的SMS客戶端,但這是一個相當大的任務。或者,您可能會找到一個開源的短信應用程序,並根據您的需求進行調整。 (這可能是我的情況。)[QKSMS](https://github.com/qklabs/qksms)最近開放源碼。 –

+0

編寫一個SMS應用程序並不是一件複雜的事情,我已經有了一個非常好的界面,它來自使用WebView的舊應用程序之一。我會這樣做的!感謝這個想法。 – Hobbyist

-1

如果您只想禁用默認SMS消息的通知,並仍收到存儲信息的,你基本上可以用這個

Disabling Default sms notification

+0

此代碼只是收到消息,事實上它已經是我的應用程序的一部分。但它不會阻止默認的短信通知,這正是我所追求的。 – Hobbyist

+0

我認爲鏈接中的代碼只能用於<4.4,而不能用於具有4.4以上的設備 –

相關問題