【问题标题】:Issue receiving SMS in KitKat在 KitKat 中接收短信问题
【发布时间】:2015-05-27 12:55:27
【问题描述】:

我对 KitKat (4.4) 中引入的新 SMS 语义有一点问题:https://developer.android.com/about/versions/android-4.4.html#SMS

我在 Jelly Bean 中开发的应用程序遇到以下情况:

系统收到一条短信,我通过广播接收器监听android.provider.Telephony.SMS_RECEIVED。 我检查 SMS 是否专门针对我的应用程序,如果是,我会中止广播,以便它不会发送到默认的 SMS 接收器应用程序。如果不适合我的应用程序,我不会中止广播,它会进入设备的消息收件箱...

使用新的 KitKat 语义(我的应用程序不是默认 SMS 应用程序)我仍然可以收到 SMS,但我无法中止广播,从而导致我的应用程序特定 SMS 消息登陆默认 SMS 应用程序的收件箱,这不是我想要的。

因此我的问题是是否可以维护我的旧工作流程(从而防止在扫描 SMS 后将 SMS 传递到默认 SMS 应用程序,即旧的 abortBroadcast()-方法)或以其他方式将我的应用程序转换为“默认短信应用程序”,但如果短信不适合我的应用程序,无论如何都可以将其路由到第二个“默认短信应用程序”?

环顾四周并找到其他线程,例如:Abort SMS Intent on Android KitKat 我猜我的第一个选项行不通,所以我希望我的第二个选项(重新路由到另一个接收短信的应用程序)是可行的!

【问题讨论】:

    标签: android android-broadcast smsmanager


    【解决方案1】:

    ...我的问题是是否可以维护我的旧工作流程(从而防止在扫描 SMS 后将 SMS 传递到默认 SMS 应用程序,即旧的 abortBroadcast() 方法)...

    没有。默认 SMS 应用程序会侦听它独有的广播,该广播不能被拦截或中止。 (SMS_DELIVER 广播。)我还要提到 SMS_RECEIVED 广播不能再被中止,所以任何监听它的应用程序都会得到它。

    ...将我的应用程序转换为“默认 SMS 应用程序”,但如果 SMS 不适合我的应用程序,则无论如何都可以将其路由到第二个“默认 SMS 应用程序”...

    不。如果你的应用是默认的短信应用,它需要处理与传入消息相关的所有事情,包括接收、处理、存储等。你不能“交出它”。

    如果您的应用不是默认应用,则实际上不可能阻止将传入消息写入提供程序。但是,我确实有一个workaround,它可能允许您的非默认应用程序在收到和写入后删除消息。 (此解决方案目前仅适用于 KitKat。我还没有让它与 Lollipop 一起使用。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-21
      • 2014-03-11
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多