歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

Android攔截短信並刪除該條短信代碼:

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();
  }
 }
}

 

 

 <!-- 注冊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>

 

權限:

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

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved