Android 如何在我的应用程序读取广播消息后删除它?

Android 如何在我的应用程序读取广播消息后删除它?,android,sms,android-broadcast,Android,Sms,Android Broadcast,我在我的应用程序中阅读广播短信 我想首先检查消息中是否存在特定模式。如果不存在,那么我想删除该短信,而不将其保存在收件箱文件夹中 我可以在我的应用程序中成功阅读短信,但无法删除它。代码片段如下所示 public class SmsListener extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (Telephony.Sms.Intents.SM

我在我的应用程序中阅读广播短信

我想首先检查消息中是否存在特定模式。如果不存在,那么我想删除该短信,而不将其保存在收件箱文件夹中

我可以在我的应用程序中成功阅读短信,但无法删除它。代码片段如下所示

public class SmsListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    if (Telephony.Sms.Intents.SMS_RECEIVED_ACTION.equals(intent.getAction())) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            for (SmsMessage smsMessage : Telephony.Sms.Intents.getMessagesFromIntent(intent)) {
                String  messageBody = smsMessage.getMessageBody();
                String pattern="$Ntmds";
                if(messageBody.indexOf(pattern)!=-1){
                    Log.d("sdsd,", String.valueOf(messageBody));
                }else {
                    //i want to delete here
                   // abortBroadcast(); <-- this is nnot working for me
                    Log.d("vb,", String.valueOf(messageBody));
                }
            }
        }
    }
}
}
公共类SmsListener扩展广播接收器{
@凌驾
公共void onReceive(上下文、意图){
if(Telephony.Sms.Intents.Sms_RECEIVED_ACTION.equals(intent.getAction())){
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.KITKAT){
for(SmsMessage SmsMessage:Telephony.Sms.Intents.getMessagesFromIntent(intent)){
字符串messageBody=smsMessage.getMessageBody();
字符串模式=“$Ntmds”;
if(messageBody.indexOf(模式)!=-1){
Log.d(“sdsd,”,String.valueOf(messageBody));
}否则{
//我想在这里删除

//abortBroadcast();您不能在棉花糖上执行此操作。它仅适用于您正在使用的Android版本的Android操作系统?我使用的是6.0(棉花糖)。您不应该为此使用普通短信-使用基于端口的短信,因此它不会出现在普通收件箱中。这意味着无法中止该短信?您有两种其他方法可以解决您的问题。请遵循谷歌的建议,在您需要执行时,如何请求用户将默认短信应用程序切换到您的应用程序您的更改(完成后,允许用户切换回原来的默认短信应用程序)。或者找到一种临时的黑客方法来执行您需要执行的操作。作为提示,有一个隐藏的API:AppOpsManager,您可以利用它来授予您的应用程序写权限(OP_write_SMS),请转到此XDA页面了解更多信息:
 <receiver android:name=".SmsListener">
        <intent-filter android:priority="2147483647">
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>