Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android攔截短信並刪除該條短信

android攔截短信並刪除該條短信

編輯:關於Android編程

直接給代碼吧:


[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" />

 

 

 

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved