【问题标题】:SMS can be abortBroadcasted on Android 5短信可以中止在Android 5上广播
【发布时间】:2016-03-23 08:32:18
【问题描述】:

我上网已经有一段时间了,以便找到一种方法来禁用对传入短信的广播,但主要是据说在 android 4.4+ 上你不能这样做,因为它的功能已经删除。但我可以告诉你这是错误的。在此link 中的银行应用程序(针对 android 4.9)中 您可以找到一个发送和接收短信的应用程序,而不会让其他应用程序注意到短信的传输。您可以下载应用程序here。 请帮我解决这个问题。如何在不通知其他应用的情况下接收短信?

【问题讨论】:

    标签: android sms broadcast


    【解决方案1】:

    他们最有可能使用数据 SMS,也称为端口寻址 SMS。事实上,快速、粗略地解压 APK 并仔细阅读清单表明他们在端口 7442 上为 DATA_SMS_RECEIVED 操作注册了一个接收器。

    数据 SMS 不由 Provider 处理(排序规则除外),只有侦听该特定端口的应用才会接收它们,因此它们不会出现在平台应用或几乎任何其他 SMS 应用中。

    所以这不是SMS_RECEIVED 广播被中止或SMS_DELIVER 广播被拦截的问题。这不是普通的短信。

    【讨论】:

    • 我不知道这种过渡方式。每个人都可以用这种方式发送短信吗?还是需要一些要求?
    • 当然,您可以处理数据短信。事实上,您可以在同一个端口上设置一个接收器,并获取发送到该应用程序的消息。 this post有发送和接收数据短信的例子。
    • 谢谢你。它终于按我的预期工作了。当我将文本转换为字节时,还有 1 个问题,如下所示: {String messageText ="message!";短 SMS_PORT = 8901; SmsManager smsManager = SmsManager.getDefault(); smsManager.sendDataMessage("**********", null, SMS_PORT,messageText.getBytes(), null, null);} 如果我将消息内容更改为非英语语言,例如波斯语(类似这个字符串messageText ="متن";) 然后接收者显示一些不可读的东西。为什么这对波斯语不起作用?真诚的谢谢你
    • 在该示例中,不要使用内部 for 循环来构建 String 一次一个字符,而是尝试以下操作:recMsgString += new String((byte[]) data);,不使用循环。
    • 是的,应该可以。我刚刚对其进行了测试,除了弄乱了我的 logcat 中的文本对齐方式(这是意料之中的)之外,您发布的那个示例 String 对我来说很好。
    猜你喜欢
    • 2011-12-05
    • 2023-01-23
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多