Java 如何删除onReceive方法捕获的相同短信

Java 如何删除onReceive方法捕获的相同短信,java,android,eclipse,Java,Android,Eclipse,请有人告诉我如何删除onReceive方法捕获的相同消息。事实上,我希望当一个按摩是收到的onReceive方法,它是第一次使用关闭后,使用它删除,但我怎么不知道,所以请帮助我的情况下。 我正在使用的代码也将标记用于此线程 @Override public void onReceive(Context context,final Intent intents){ if (intents.getAction().equals(ConstantClass.SMS_RECEIVED

请有人告诉我如何删除onReceive方法捕获的相同消息。事实上,我希望当一个按摩是收到的onReceive方法,它是第一次使用关闭后,使用它删除,但我怎么不知道,所以请帮助我的情况下。 我正在使用的代码也将标记用于此线程

  @Override
    public void onReceive(Context context,final Intent intents){
    if (intents.getAction().equals(ConstantClass.SMS_RECEIVED)) {
    new Thread(){
    Context context;
    Thread Set(Context ctx){
    this.context=ctx;
    return this;
    }
    public void run(){
    try{
    Bundle bundle = intents.getExtras();            
    if (bundle != null) {
    Object[] pdus = (Object[]) bundle.get("pdus");
    SmsMessage[] messages = new SmsMessage[pdus.length];
    for (int i = 0; i < pdus.length; i++)
    messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
    String msg=null;
    String address = null;
    for (SmsMessage message : messages) {
    msg = message.getMessageBody();
    address = message.getOriginatingAddress();
    }
    dba.Open();
    int id = dba.getCordiId(address);
    int count = dba.getDeviceCount(ConstantClass.dbName[1]);
    if(count<=0){
    dba.InsertCurrentCoord(id,id);
    }else{
    Strsql = new String("UPDATE " + ConstantClass.dbName[1] + " SET " + DataBaseAdapter.Key_ReceiverCoord + " = " + 
    Integer.toString(id) + " WHERE " + DataBaseAdapter.Key_ID + " = ?");
    dba.UpdateQuery(Strsql, Integer.toString(id));
    }
    dba.Close();
    ////////////sending to SMSSync class//////////////
    MainThread th = new MainThread(sync,msg);
    try{
    th.thread.join();
    }catch(Exception e){
    Toast.makeText(context, e.getMessage(), Toast.LENGTH_SHORT).show();
    }
    if(msg.substring(3, 4).equals("2"))
    ConstantClass.isAuditrequestSend = true;
    }
    /*******after receiving the sms opening the Main Screen.*****************/
    Intent intent = new Intent(context,ZigbeeActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(intent);
    abortBroadcast();
    /************Now deleting the SMS from the Inbox*********************/
    Uri uriSms = Uri.parse("content://sms"); 
    Cursor c = context.getContentResolver().query(uriSms, null,null,null,null);  
    int trId= c.getInt(0);
    int thread_id =c.getInt(1); 
    context.getContentResolver().delete(Uri.parse("content://sms/conversations/" + thread_id),null,null); 
    }catch(Exception e){
    dlg = new ExceptionDialog(context,"On Sms Receiver",e.getMessage());
    dlg.show();
    }
    }
    }.Set(context).start();
    }
    }

可能您正在尝试在收件箱中或在数据库表中插入之前删除sms,所以请注册一个ContentObserver以便观看content://sms 当短信到达收件箱时,请将其删除。请参见示例

尝试此方法,并让我知道发生了什么,只需传递消息来源的上下文和号码

注:-

这用于删除特定编号的完整线程

另外,在线程延迟后调用此方法

new Thread(new Runnable() {
    @Override
    public void run() {
        try {
            Thread.sleep(2000);
            removeMessage(mContext, "From_number");
        } catch (InterruptedException e) {
            e.printStackTrace();
             }

粘贴带有良好缩进的代码。我尝试过格式化它,但没有缩进。为什么你先保存短信,然后删除你可以直接限制,然后再保存在你的onreciev
new Thread(new Runnable() {
    @Override
    public void run() {
        try {
            Thread.sleep(2000);
            removeMessage(mContext, "From_number");
        } catch (InterruptedException e) {
            e.printStackTrace();
             }