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