2014-02-23 113 views
3

我已經編寫了一個應用程序,它接收傳入的SMS,並將其保存並顯示給用戶。由於三星的ChatOn應用程序更新,突然我的應用程序停止接收短信。Android:SMS被ChatON應用程序阻止

這裏是我的Manifest.xml:

<uses-permission android:name="android.permission.RECEIVE_SMS" /> 


<receiver android:name="com.myapp.sms.service.SMSReceiver" 
    android:permission="android.permission.BROADCAST_SMS" android:exported="true"> 
    <intent-filter android:priority="999"> 
     <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
    </intent-filter> 
</receiver> 

我有這個問題,前面有Hangouts轉播開始支持SMS。所以,當時我在清單文件中增加了999(最大值)的優先級。這工作。

但是,在最近更新的ChatOn應用程序後,我的應用程序停止接收短信。請告訴我怎樣才能克服這一點。

對於解決辦法,我在ChatOn應用程序上取消選中SMS選項。

任何幫助表示讚賞。

+0

FWIW應用,最大的獨立廣播'android:priority'不是999.這就是文檔聲明的內容,而且文檔是錯誤的。最大值是「Integer.MAX_VALUE」的數字,大約爲20億。請記住,即使您要求此優先級,由於Android使用的任何決勝者(GoSMS導致此問題很多),其他應用程序仍然可能會超過您。 – CommonsWare

+0

@CommonsWare,好吧,如果你說文檔是錯誤的,並且如果我將優先級設置爲Integer.MAX_VALUE,那麼如果應用程序停止廣播,所有其他應用程序將停止接收SMS。我猜這就是ChatOn正在做的事情。這應該不存在。那麼什麼是正確的解決方案呢?此功能對我的應用程序是強制性的。 – User12111111

+0

「,那麼如果廣播被應用程序停止,則所有其他應用程序都將停止接收短信」 - 終止有序廣播的應用程序會阻止低優先級接收機獲取該廣播。 「這就是我猜ChatOn正在做的事情 - 」這是一種可能性。 [安裝「App Browser」](https://play.google.com/store/apps/details?id=com.japanesecrackers.appbrowser)並檢查ChatOn的清單。 「那麼對此的正確解決方案是什麼?」 - 如果優先級較高的應用程序使用該事件,則無法執行任何操作,但無法保證始終處於最高優先級。 – CommonsWare

回答

2

沒有保證的方式,您的應用程序可以在Android 4.3及更低版本的SMS消息上獲得「第一次破解」。即使您將應用設置爲最高優先級,其他應用也可以這樣做。 GoSMS尤其如此,並且您已經指出ChatOn也是如此。如果他們先收到消息並中止廣播,則不會收到消息。

除了檢測此可能性(使用PackageManager)並警告用戶可能的行爲外,沒有什麼可以做的。

注意on Android 4.4, this is a lot different

  • 廣播不再被中止
  • 沒有關於被監控手機短信和最終的實際SMS客戶端應用程序
+0

感謝您的輸入。我還需要支持較低版本。 – User12111111