android - 如何防止短信进入 Android Kitkat 中的收件箱

标签 android android-broadcast

在以前的android版本中,我们可以使用以下代码来阻止短信:

 <receiver android:name=".broadcastreceivers.OnSMSReceived"
                  android:exported="true" android:permission="android.permission.BROADCAST_SMS">

            <intent-filter android:priority="1000">
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
            </intent-filter>
        </receiver>

在广播接收器中,abortBroadcast() 函数阻止 SMS 进入收件箱。 但是这种方法在 kitkat 中不起作用,因为来自 Kitkat 的短信只会被默认的短信应用程序接收。在 kitkat 中创建短信拦截器应用程序有什么解决方法吗?

最佳答案

您应该阅读此页面:http://android-developers.blogspot.com/2013/10/getting-your-sms-apps-ready-for-kitkat.html

KitKat 中引入了一项更改,一次只允许一个应用程序(默认 SMS 应用程序)对 SMS 数据库具有写入权限并能够使用它。

您有两种解决问题的方法:

  • 在您需要执行更改时,请遵循 Google 关于如何请求用户将默认 SMS 应用程序切换到您的应用程序的建议(完成后,允许用户切换回原始默认短信应用程序)。

  • 找到一种临时的 hacky 方式来完成您需要做的事情。作为提示,有一个隐藏的 API:AppOpsManager#setMode您可能会利用它来授予您的应用程序写入权限 (OP_WRITE_SMS),请访问此 XDA 页面以了解更多信息:http://forum.xda-developers.com/showthread.php?t=2551072

不用说,任何 hacky 解决方案都只是暂时的,因为私有(private)/隐藏 API 可能随时更改。强烈建议实现谷歌建议我们实现的内容,再次描述 here .

关于android - 如何防止短信进入 Android Kitkat 中的收件箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20805535/

相关文章:

android - 在 Android 3.0 中更改 EditText 的光标颜色

android - 单击按钮时触发 BroadcastReceiver

android - 在 android 中解析 KSoap2 响应

android - 如何在android中获取传入的短信?

android - 如何注销连接到 LocalBroadcastManager 的接收器?

java - 无法重新安装崩溃的 Sony SmartWatch Control

android - 类别 DEFAULT 与广播接收器有什么用?

java - 在 Firebase 中进行循环查询

android - 通过 android 访问打印机

java.lang.IndexOutOfBoundsException :Invalid index x, 大小为 x