2011-07-03 29 views
9

我已經實現了一個短信接收器,它可以在沒有任何問題的情況下攔截收到的短信。 但是,當我安裝GO SMS Pro並設置「禁用其他消息通知」時,即使我已將意向篩選器 的優先級設置得非常高,我的應用程序 仍未收到任何廣播消息。有沒有一種方法可以解決這個問題,以至於我的應用程序總是收到SMS廣播,而不管用戶在Go SMS Pro的應用程序上做什麼 ,特別是因爲我的應用程序沒有顯示任何UI彈出 通知?只要我卸載GO短信臨,我的應用程序開始收到短信廣播 和工作正常。SMS廣播接收器在GO短信專業版安裝時未被調用

以下是收到傳入短信並安裝GO SMS Pro的日誌。有一些 魔術由GO SMS Pro完成,我不明白。有人可以解釋一下這裏做了什麼,我可以確保我的應用程序每次都能得到有序的廣播通知。

07-02 19:52:21.674: INFO/Zygote(25209): Zygote: pid 25209 has INTERNET permission, then set capability for CAP_NET_RAW 

07-02 19:52:21.820: INFO/ActivityThread(25209): Publishing provider go-sms: com.jb.gosms.provider.GoSmsProvider 

07-02 19:52:21.830: INFO/ActivityThread(25209): Publishing provider go-mms-sms: com.jb.gosms.provider.GoMmsSmsProvider 

07-02 19:52:21.834: INFO/ActivityThread(25209): Publishing provider com.jb.gosms.im;com.jb.gosms.chat: 
com.jb.gosms.im.database.ImContentProvider 

07-02 19:52:21.842: INFO/ActivityThread(25209): Publishing provider com.jb.gosms.schedule.Schedule: com.jb.gosms.schedule.ScheduleProvider 

07-02 19:52:21.846: INFO/ActivityThread(25209): Publishing provider go-mms: com.jb.gosms.provider.GoMmsProvider 

07-02 19:52:21.959: DEBUG/dalvikvm(25209): GC_FOR_MALLOC freed 2657 objects/173112 bytes in 30ms 

07-02 19:52:22.182: DEBUG/dalvikvm(25209): Trying to load lib /data/data/com.jb.gosms/lib/libHanzi2Pinyin.so 0x47d4cf70 

07-02 19:52:22.182: DEBUG/dalvikvm(25209): Added shared lib /data/data/com.jb.gosms/lib/libHanzi2Pinyin.so 0x47d4cf70 

07-02 19:52:22.182: DEBUG/dalvikvm(25209): No JNI_OnLoad found in /data/data/com.jb.gosms/lib/libHanzi2Pinyin.so 0x47d4cf70, skipping init 

07-02 19:52:22.186: INFO/Hanzi2Pinyin_Native(25209): InitLib in ver=3141000 

07-02 19:52:22.186: INFO/Hanzi2Pinyin_Native(25209): Init in 

07-02 19:52:22.186: INFO/Hanzi2Pinyin_Native(25209): file size=155203 

07-02 19:52:22.186: INFO/Hanzi2Pinyin_Native(25209): Init out 

07-02 19:52:22.186: INFO/Hanzi2Pinyin_Native(25209): Instance out Init = 21 

07-02 19:52:22.186: INFO/Hanzi2Pinyin_Native(25209): InitLib out 

07-02 19:52:22.467: DEBUG/dalvikvm(25209): GC_FOR_MALLOC freed 5960 objects/376104 bytes in 29ms 

07-02 19:52:22.815: DEBUG/IMS/Ims3GPP2SmsMessage(25209): IMSLogcreateFromPdu : calling parsePdu 

07-02 19:52:22.815: DEBUG/IMS/Ims3GPP2SmsMessage(25209): IMSLogpdu to parse : 000002100202070292A106A85A0008150003100730010610254E9D3A000306110702195220 

07-02 19:52:22.815: DEBUG/IMS/Ims3GPP2SmsMessage(25209): IMSLogparseAddress 

07-02 19:52:22.815: DEBUG/IMS/Ims3GPP2SmsMessage(25209): IMSLogaddress received :3233292992 

07-02 19:52:22.815: DEBUG/IMS/Ims3GPP2SmsMessage(25209): IMSLogbearer data received : 0003100730010610254E9D3A000306110702195220 

07-02 19:52:22.815: ERROR/bearer data(25209): bearer data obtained 1 

07-02 19:52:22.815: DEBUG/EMS(25209): messageType is 1 messageId is 115 hasUserDataHeader is false 

07-02 19:52:22.858: DEBUG/IMS/Ims3GPP2SmsMessage(25209): IMSLogcreateFromPdu : calling parsePdu 
+0

我工作的這個情況也:HTTP:// stackov所有應用程序的所有接收器的列表erflow.com/questions/6600266/suppress-block-broastreceiver-in-another-app –

回答

12

「相當高」優先值是不夠的,當談到因爲他們已經設置爲GO短信它們對2147483647(2^31-1)絕對最大值。所以如果你把這個價值放在一邊,只要你的應用程序安裝在Go SMS Pro之前,你就會好起來的,因爲當同樣優先級的Android操作系統會將廣播傳遞給「舊」應用程序(這是根據我的經驗,而不是官方信息) 。如果Go SMS Pro在您的應用程序之前安裝,您應該警告用戶有關情況。他們可以配置Go SMS Pro或將其卸載,然後重新安裝,以便您的應用也可以工作。

+1

有一種方法,因爲我安裝了幾個短信應用程序來測試這個,即使Go SMS是第一次安裝,我得到了所有3個短信應用程序的通知我已安裝(但不是我的:() –

+2

我也將我的應用程序的優先級設置爲2147483647,即使在我的應用程序之後安裝它,gosms仍然攔截短信。有任何想法嗎??? – droideckar

+0

有沒有其他想法?我的應用程序也安裝在GoSMS之後,GoSMS仍然收到我之前的廣播。我的優先級也設置爲(2^31-1)。 – evermeire

5

GO短信已設置這些線條在它的艙單SmsReceiver:

<receiver android:name=".smspopup.SmsReceiver"  android:permission="android.permission.BROADCAST_SMS"> 
     <intent-filter android:priority="2147483647"> 
      <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
     <intent-filter android:priority="2147483647"> 
      <action android:name="android.provider.Telephony.GSM_SMS_RECEIVED" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.provider.Telephony.WAP_PUSH_RECEIVED" /> 
      <data android:mimeType="application/vnd.wap.mms-message" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="com.android.mms.transaction.MESSAGE_SENT" /> 
     </intent-filter> 
    </receiver> 

所有這些意圖過濾器使得它的優先級比你的接收機更高,即使你reciever有優先級設置爲2147483647。你可以看到

List<ResolveInfo> receivers = getPackageManager().queryBroadcastReceivers(new Intent("android.provider.Telephony.SMS_RECEIVED"), 0); 

在列表中的第一個接收器,前收到了短信比別人

相關問題