android攔截簡訊並刪除該條簡訊

來源:互聯網
上載者:User

直接給代碼吧:


[html]
package com.zte.android.greenweb.launcher.service; 
 
import org.json.JSONException; 
import org.json.JSONObject; 
 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.database.Cursor; 
import android.net.Uri; 
import android.os.Bundle; 
import android.telephony.SmsMessage; 
 
public class InterceptSmsReciever extends BroadcastReceiver 

 
    // 廣播訊息類型 
    public static final String SMS_RECEIVED_ACTION = 
            "android.provider.Telephony.SMS_RECEIVED"; 
 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
        String msgContent = ""; 
        String functiontype = ""; 
        Bundle bundle = intent.getExtras(); 
        Object messages[] = (Object[]) bundle.get("pdus"); 
        SmsMessage smsMessage[] = new SmsMessage[messages.length]; 
        for (int n = 0; n < messages.length; n++) 
        { 
            smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]); 
            msgContent = smsMessage[n].getMessageBody(); 
            try 
            { 
                JSONObject json = new JSONObject(msgContent); 
                functiontype = json.getString("functiontype"); 
                if (functiontype.equalsIgnoreCase("TimelyManage"))// 
                { 
                    String opennet = json.getString("actiontype"); 
                    Intent in = new Intent(); 
                    in.putExtra("OpenNet", opennet); 
                    context.sendBroadcast(intent); 
                    deleteSMS(context, msgContent); 
                    this.abortBroadcast(); 
                } 
            } 
            catch (JSONException e) 
            { 
                e.printStackTrace(); 
            } 
        } 
    } 
 
    public void deleteSMS(Context context, String smscontent) 
    { 
        try 
        { 
            // 準備系統簡訊收信箱的uri地址 
            Uri uri = Uri.parse("content://sms/inbox");// 收信箱 
            // 查詢收信箱裡所有的簡訊 
            Cursor isRead = 
                    context.getContentResolver().query(uri, null, "read=" + 0, 
                            null, null); 
            while (isRead.moveToNext()) 
            { 
                // String phone = 
                // isRead.getString(isRead.getColumnIndex("address")).trim();//擷取發信人 
                String body = 
                        isRead.getString(isRead.getColumnIndex("body")).trim();// 擷取資訊內容 
                if (body.equals(smscontent)) 
                { 
                    int id = isRead.getInt(isRead.getColumnIndex("_id")); 
 
                    context.getContentResolver().delete( 
                            Uri.parse("content://sms"), "_id=" + id, null); 
                } 
            } 
        } 
        catch (Exception e) 
        { 
            e.printStackTrace(); 
        } 
    } 

package com.zte.android.greenweb.launcher.service;

import org.json.JSONException;
import org.json.JSONObject;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.SmsMessage;

public class InterceptSmsReciever extends BroadcastReceiver
{

 // 廣播訊息類型
 public static final String SMS_RECEIVED_ACTION =
   "android.provider.Telephony.SMS_RECEIVED";

 @Override
 public void onReceive(Context context, Intent intent)
 {
  String msgContent = "";
  String functiontype = "";
  Bundle bundle = intent.getExtras();
  Object messages[] = (Object[]) bundle.get("pdus");
  SmsMessage smsMessage[] = new SmsMessage[messages.length];
  for (int n = 0; n < messages.length; n++)
  {
   smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
   msgContent = smsMessage[n].getMessageBody();
   try
   {
    JSONObject json = new JSONObject(msgContent);
    functiontype = json.getString("functiontype");
    if (functiontype.equalsIgnoreCase("TimelyManage"))//
    {
     String opennet = json.getString("actiontype");
     Intent in = new Intent();
     in.putExtra("OpenNet", opennet);
     context.sendBroadcast(intent);
     deleteSMS(context, msgContent);
     this.abortBroadcast();
    }
   }
   catch (JSONException e)
   {
    e.printStackTrace();
   }
  }
 }

 public void deleteSMS(Context context, String smscontent)
 {
  try
  {
   // 準備系統簡訊收信箱的uri地址
   Uri uri = Uri.parse("content://sms/inbox");// 收信箱
   // 查詢收信箱裡所有的簡訊
   Cursor isRead =
     context.getContentResolver().query(uri, null, "read=" + 0,
       null, null);
   while (isRead.moveToNext())
   {
    // String phone =
    // isRead.getString(isRead.getColumnIndex("address")).trim();//擷取發信人
    String body =
      isRead.getString(isRead.getColumnIndex("body")).trim();// 擷取資訊內容
    if (body.equals(smscontent))
    {
     int id = isRead.getInt(isRead.getColumnIndex("_id"));

     context.getContentResolver().delete(
       Uri.parse("content://sms"), "_id=" + id, null);
    }
   }
  }
  catch (Exception e)
  {
   e.printStackTrace();
  }
 }
}

[html] 
<!-- 註冊Receiver,並且設定優先權 --> 
       <receiver 
           android:name="com.zte.android.greenweb.launcher.service.InterceptSmsReciever" 
           android:exported="true" > 
           <intent-filter android:priority="1000" > 
               <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
               <category android:name="android.intent.category.DEFAULT" /> 
           </intent-filter> 
       </receiver> 

 <!-- 註冊Receiver,並且設定優先權 -->
        <receiver
            android:name="com.zte.android.greenweb.launcher.service.InterceptSmsReciever"
            android:exported="true" >
            <intent-filter android:priority="1000" >
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>


許可權:


[html]
<uses-permission android:name="android.permission.RECEIVE_SMS" /> 
   <uses-permission android:name="android.permission.READ_SMS" /> 
   <uses-permission android:name="android.permission.WRITE_SMS" /> 

 <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.WRITE_SMS" />

 

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.