我的应用程序阅读后如何删除广播消息?
how to delete broadcast message after read it by my app?
我在我的应用程序中阅读了一条广播短信。
我想先检查该消息中是否存在特定模式。如果不存在,那么我想删除该短信而不将其保存在收件箱文件夹中。
我可以在我的应用程序中成功读取短信,但无法将其删除。代码片段如下。
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));
}
}
}
}
}
}
AndroidManifest.xml
<receiver android:name=".SmsListener">
<intent-filter android:priority="2147483647">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
我尝试了很多但没有成功。我使用 abortBroadcast() 但它也不适合我。请帮助我。
你不能在 Marshmallow 上这样做。它只适用于 Android OS <= 4.3
随着 Android 4.4 KitKat(API 级别 19)的发布,阻止 SMS 消息并防止它被传递到默认 SMS 应用程序的选项已被删除。非默认 SMS 应用程序可能会在收到 SMS 消息时观察到它们,但 Android 4.4+ 将忽略任何中止广播的尝试。
如果您现有的应用程序依赖于中止 SMS 消息广播,那么您可能需要考虑当您的用户升级到 Android 4.4+ 时这种行为变化将产生的影响。
http://android-developers.blogspot.co.uk/2013/10/getting-your-sms-apps-ready-for-kitkat.html
我在我的应用程序中阅读了一条广播短信。
我想先检查该消息中是否存在特定模式。如果不存在,那么我想删除该短信而不将其保存在收件箱文件夹中。
我可以在我的应用程序中成功读取短信,但无法将其删除。代码片段如下。
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));
}
}
}
}
}
}
AndroidManifest.xml
<receiver android:name=".SmsListener">
<intent-filter android:priority="2147483647">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
我尝试了很多但没有成功。我使用 abortBroadcast() 但它也不适合我。请帮助我。
你不能在 Marshmallow 上这样做。它只适用于 Android OS <= 4.3
随着 Android 4.4 KitKat(API 级别 19)的发布,阻止 SMS 消息并防止它被传递到默认 SMS 应用程序的选项已被删除。非默认 SMS 应用程序可能会在收到 SMS 消息时观察到它们,但 Android 4.4+ 将忽略任何中止广播的尝试。
如果您现有的应用程序依赖于中止 SMS 消息广播,那么您可能需要考虑当您的用户升级到 Android 4.4+ 时这种行为变化将产生的影响。
http://android-developers.blogspot.co.uk/2013/10/getting-your-sms-apps-ready-for-kitkat.html