其他分享
首页 > 其他分享> > 如何防止短信进入Android Kitkat的收件箱

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

作者:互联网

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

 <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的SMS只会被默认的SMS应用程序接收.有没有解决方法在kitkat中创建SMS拦截器应用程序?

解决方法:

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

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

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

>在您需要执行更改期间,请按照Google的建议,了解如何请求用户将默认SMS应用程序切换到您的应用程序(一旦您完成此操作,允许用户切换回原始默认SMS应用程序) .
>找一个临时的hacky方式来做你需要做的事情.作为提示,有一个隐藏的API:AppOpsManager#setMode您可能会利用它来为您的应用程序提供写入权限(OP_WRITE_SMS),请访问此XDA页面以了解有关它的更多信息:http://forum.xda-developers.com/showthread.php?t=2551072

毋庸置疑,任何hacky解决方案都只是暂时的,因为私有/隐藏API可能随时发生变化.强烈建议实施Google建议我们实施的内容,该内容将在here中再次描述.

标签:android-broadcast,android
来源: https://codeday.me/bug/20190825/1717744.html