-2

特定の番号からSMSを読み取り、受信トレイに保存せずに削除したい。以下はSMSを読み取る私のコードですが、このコードはSMSを受信トレイに保存します。読んだ後、特定の番号からSMSを削除するにはどうすればよいですか?

public class SmsReceiver extends BroadcastReceiver 
{
public static  String SMSstr;
public void onReceive(Context context, Intent intent) 
{
    //---get the SMS message passed in---
    Bundle bundle = intent.getExtras();        
    SmsMessage[] msgs = null;
    String str = "";  

    if (bundle != null)
    {
        //---retrieve the SMS message received---
        Object[] pdus = (Object[]) bundle.get("pdus");
        msgs = new SmsMessage[pdus.length];            
        for (int i=0; i<msgs.length; i++){
            msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);                

            String phNum = msgs[i].getOriginatingAddress();  

            str += msgs[i].getMessageBody().toString();
            if ("15555215556".equals(phNum))
            {
                // delete code goes here

                Intent l = new Intent(context,AgAppMenu.class);
                l.putExtra("msg",str);
                l.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(l);
                Toast.makeText(context, "SucessFull Login", Toast.LENGTH_SHORT).show();
            }
        }


         <receiver android:name=".SmsReceiver" android:enabled="true"> 
     <!--       <intent-filter >-->
            <intent-filter android:priority="1000"> 
            <action android:name=
                "android.provider.Telephony.SMS_RECEIVED" /> 
       </intent-filter> 
    </receiver>
4

2 に答える 2

2

メッセージを削除したい場合abortBroadcast()は、目的のソースを確認した後に を呼び出すだけです。

于 2013-05-23T11:16:20.733 に答える
1

次のコードを試してください。

String specificPhoneNumber = "9898989898";

String addr = msg[i].getOriginatingAddress().trim();  // to get the SMS Number

if ( addr.trim().equals ( specificPhoneNumber.trim() )
{
      // delete SMS
      Cursor c = getContentResolver().query(SMS_INBOX, null, null, null, null);
      String pid = c.getString(1);
      String uri = "content://sms/conversations/" + pid; 
      getContentResolver().delete(Uri.parse(uri), null, null);
}
于 2012-09-13T11:25:06.377 に答える