在以前的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/