【问题标题】:SMS Received in my SMS app and in Hangouts, although I call abortBroadcast()在我的短信应用和环聊中收到短信,尽管我调用了 abortBroadcast()
【发布时间】:2013-11-17 05:44:02
【问题描述】:

我有一个自己开发的短信拦截器 Android 应用程序,它可以很好地捕获所有垃圾邮件,直到最近谷歌更新了它的环聊应用程序以处理短信。

问题:我的应用程序和环聊都捕获了短信!即使该消息被我的应用程序阻止并存储在其私有数据库中,它也存在于环聊应用程序中,因此同时存在于股票消息应用程序中。

似乎abortBroadcast() 不再工作了。在环聊更新之前一切正常。

我也曾尝试摆弄android:priority,但徒劳无功。

【问题讨论】:

  • 这是主题。 OP 询问为什么另一个应用程序与他们对 Android API 的使用发生冲突,以及可以采取哪些措施来解决它。

标签: android sms broadcastreceiver hangout


【解决方案1】:

环聊使用可能的最高优先级(每个the Intent-Filter docs 999),因此您无法在 default SMS app (blog post with details) 可以接收短信通知 - 用户需要将您的应用设置为默认短信应用,您的应用才能正常运行(尽管如果发生这种情况,它应该会按预期运行)。

【讨论】:

  • 我也有同样的问题。为我们的应用设置相同的优先级 (999) 会解决问题还是不会?
  • @oracleruiz - 匹配优先级的顺序是随机的,因此您不会得到一致的结果。
  • 是否可以针对某些传入短信禁用环聊通知?
  • @ianhanniballake - 你的意思是我不能在
  • @oracleruiz - 我不希望我的用户禁用环聊,因为那样它将成为我的应用程序的限制:)
【解决方案2】:

注册接收器时,将过滤器的优先级设置为 INTEGER.MAX_VALUE。 现在 abortBroadcast() 可以工作了;

    receiver = new HightPrioritySmsReceiver();
    IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
    filter.setPriority(Integer.MAX_VALUE);
    registerReceiver(receiver, filter);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 2011-12-05
    相关资源
    最近更新 更多