2015-07-12 40 views
9

按照the doc根據Android 4.4及更高版本阻止傳入短信?

需要注意的是,開始採用Android 4.4的任何由您的應用程序試圖中止 的SMS_RECEIVED_ACTION廣播將被忽略,所以大家都感興趣的應用程序 不得不接受它的機會。

因此,只有默認的短信應用可以做到這一點,看起來好像沒什麼用的是Android 5.0變化(由於未知的原因,根據issue被標記爲已過時)。

如果電話是根源的(這是垃圾郵件攔截應用程序所需的),是否有任何方法阻止非默認短信應用程序的傳入短信?怎麼做?

+1

誰已降低評分,請您澄清原因? –

回答

4

你可以寫一個覆蓋CarrierMessagingService的服務。 如果對此的綁定成功,則消息不會傳遞到主應用程序。

BIND_CARRIER_MESSAGING_SERVICE註冊爲運營商消息傳遞服務所需的權限需要該應用程序爲系統應用程序。所以你需要將你的應用推向系統。

5

使您的應用成爲默認的SMS提供商。然後它可以註冊SMS_DELIVER_ACTION。在該接收器中,您可以選擇將SMS寫入數據庫或不寫入。如果你選擇不這樣做,SMS基本上被忽略。如果您選擇,任何其他應用程序都可以收到短信。

+1

問題是如何在不將應用程序作爲默認SMS提供程序的情況下執行此操作。 –

+4

這個問題沒有說明。答案是你不能 - 他們添加默認的SMS提供者的原因是爲了防止惡意使用該功能的應用程序。爲了防止短信,您現在必須被用戶明確授予該權力。 –

+1

你說得對,這個問題並沒有說清楚。 –

2

你可以嘗試以下解決方案:通過能處理短信套餐的清單

迭代和編程禁用它們。

要獲取API以禁用應用程序,您必須成爲MDM(移動設備管理)合作伙伴應用程序.OEMs爲其MDM合作伙伴應用程序提供其他API以控制設備。例如,samsung提供api以禁用特定的應用程序我猜他們也有API來控制特定應用的權限。

另外我猜想新的android Device/Profile Owner模式必須有一個API來禁用特定的應用程序。