2011-07-03 27 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); 

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

相关问题