具体的就不说什么了,直接附源码,有不明白的回复提问:
package mars.testlayout;
/*
* author:gongchao
*/
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.ProgressDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.telephony.gsm.SmsMessage;
import android.util.Log;
import android.widget.Toast;
@SuppressLint("NewApi")
@TargetApi(Build.VERSION_CODES.DONUT)
public class SmsSrevice extends BroadcastReceiver{
public static String content1="sdfsdf";
public static String content;
public static String sms;
public static String []word;
public static String result;
private Pattern pattern;
private Scanner scanner;
public SmsSrevice(){
Log.v("TAG", "SmsListener");
}
@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
Log.v("TAG", "SmsListener");
System.out.println("sdsweserwrwrw");
Object [] pdus=(Object [])arg1.getExtras().get("pdus");
if(pdus!=null&&pdus.length>0){
SmsMessage [] messages=new SmsMessage[pdus.length];
for(int i=0;i<pdus.length;i++){
byte [] pdu=(byte[])pdus
;
messages=SmsMessage.createFromPdu(pdu);
}
for(SmsMessage message:messages){
content=message.getMessageBody();
String sender=message.getDisplayOriginatingAddress();
if(sender.equals("10001")){
abortBroadcast();
System.out.println("sadsa");
Log.e("TAG", "已拦截");
System.out.println(content);
sms=content;
pattern=Pattern.compile("您[\\d]+年[\\d]+月账单合计[\\d]+\56[\\d]+元|您当月套餐内上网流量已使用[\\d]+\56[\\d]+MB流量,剩余[\\d]+\56[\\d]+MB流量|您的账户实时费用为[\\d]+\56[\\d]+元、手机实时费用为[\\d]+\56[\\d]+元。|截止至[\\d]+年[\\d]+月[\\d]+日,您累计未结清费用为[\\d]+\56[\\d]+元,谢谢使用!|截止至[\\d]+年[\\d]+月[\\d]+日,您已消费[\\d]+\56[\\d]+元[\\p{Punct}]+含历史费用[\\d]+\56[\\d]+元[\\p{Punct}]+,当月可用金额[\\p{Punct}]+含预存分月返还[\\p{Punct}]+为[\\d]+\56[\\d]+元|WIFI上网分钟数[\\d]+分钟,已使用[\\d]+分钟。");
//Pattern pattern5=Pattern.compile(regex5);
Matcher matcher=pattern.matcher(sms);
if(matcher.find()){
Toast.makeText(arg0, "正在为你智能整理查询结果,请稍后!", Toast.LENGTH_SHORT).show();
Button1_3.dialog.dismiss();
System.out.println(sms);
System.out.println(matcher.group());
result=matcher.group();
Toast.makeText(arg0, result,Toast.LENGTH_LONG).show();
}
else{
Button1_3.dialog.dismiss();
Toast.makeText(arg0, "当前为查询高峰期,请稍后查询!", Toast.LENGTH_SHORT).show();
}
}
System.out.println("hascgs");
System.out.println("11111111");
}
}
}
}