Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安装GO SMS Pro时未调用SMS广播接收器_Android - Fatal编程技术网

Android 安装GO SMS Pro时未调用SMS广播接收器

Android 安装GO SMS Pro时未调用SMS广播接收器,android,Android,我已经实现了一个SMS接收器,它可以截获传入的SMS消息而没有任何问题。 然而,当我安装GO SMS Pro并设置“禁用其他消息通知”时,我的应用程序 即使我已在意向过滤器上设置了优先级,也不会收到任何广播消息 非常高。有没有办法克服这个问题,让我的应用程序始终接收短信广播 用户在移动SMS Pro的应用程序中做了什么,特别是因为我的应用程序没有显示任何UI弹出窗口 通知?一旦我卸载GO SMS Pro,我的应用程序就会开始接收传入的SMS广播 而且效果很好 以下是接收到传入SMS并安装GO S

我已经实现了一个SMS接收器,它可以截获传入的SMS消息而没有任何问题。 然而,当我安装GO SMS Pro并设置“禁用其他消息通知”时,我的应用程序 即使我已在意向过滤器上设置了优先级,也不会收到任何广播消息 非常高。有没有办法克服这个问题,让我的应用程序始终接收短信广播 用户在移动SMS Pro的应用程序中做了什么,特别是因为我的应用程序没有显示任何UI弹出窗口 通知?一旦我卸载GO SMS Pro,我的应用程序就会开始接收传入的SMS广播 而且效果很好

以下是接收到传入SMS并安装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

对于Go SMS Pro,优先级的“相当高”值是不够的,因为他们已将绝对最大值设置为2147483647(2^31-1)。所以,如果你把这个值放进去,只要你的应用程序在Go之前安装好,你就没事了。SMS Pro是因为当优先级相同时,Android操作系统会将广播传递给“较旧”的应用程序(这是我的经验,不是官方信息)。如果在应用程序之前安装了Go SMS Pro,则应向用户发出警告。他们可以对Go SMS Pro进行不同的配置,或者卸载它,然后重新安装,这样你的应用程序也可以工作。

Go SMS Pro在其清单中为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>

即使您的接收器的优先级设置为2147483647,所有这些意向过滤器也会使其优先级高于接收器。您可以通过以下方式查看所有应用程序的所有接收器列表:

List<ResolveInfo> receivers = getPackageManager().queryBroadcastReceivers(new Intent("android.provider.Telephony.SMS_RECEIVED"), 0);
List receivers=getPackageManager().querybroadcasreceivers(新意图(“android.provider.Telephony.SMS_RECEIVED”),0;

列表中的第一个接收者比其他接收者更早收到短信

我也在处理这种情况:有一种方法,因为我安装了几个短信应用来测试这一点,即使Go sms是第一个安装的,我也会收到我安装的所有3个短信应用的通知(但不是我的:()我还将我的应用程序的优先级设置为2147483647,即使在我的应用程序之后安装,gosms仍然会截获短信。有什么想法吗?有什么其他想法吗?我的应用程序也在gosms之后安装,gosms仍然在我之前接收广播。我的优先级也设置为(2^31-1)。我也有同样的问题