android短信拦截器代码 android短信拦截代码

今天转的一个短信拦截器,我修改过可以完美实现。在这个拦截器中,可以有两种方式来设置拦截,一种是在AndroidManifest.xml直接设置拦截,另外一种是通过手动注册来设计拦截。在这里我们需要通过查文档找到短信收发的一些权限。
下面我附上自己做的这个拦截器的代码供大家参考。
main.xml layout

Java代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <Button
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="注册拦截"
  11. android:onClick="regiset"
  12. />
  13. <Button
  14. android:layout_width="fill_parent"
  15. android:layout_height="wrap_content"
  16. android:text="解注册拦截"
  17. android:onClick="unregiset"
  18. />
  19. </LinearLayout>

首页显示的SmsListenerActivity:

Java代码
  1. packagecom.tk178zhe.android.SmsListener;
  2. importandroid.app.Activity;
  3. importandroid.content.IntentFilter;
  4. importandroid.os.Bundle;
  5. importandroid.view.View;
  6. importandroid.widget.Toast;
  7. publicclassSmsListenerActivity extendsActivity{
  8. privateSmsRecevierrecevier;
  9. privatebooleanisregiset=false;
  10. privatestaticfinalStringACTION="android.provider.Telephony.SMS_RECEIVED";
  11. @Override
  12. publicvoidonCreate(BundlesavedInstanceState){
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.main);
  15. recevier=newSmsRecevier();
  16. }
  17. publicvoidregiset(Viewv){
  18. IntentFilterfilter=newIntentFilter(ACTION);
  19. filter.setPriority(1000);//设置优先级最大
  20. registerReceiver(recevier,filter);
  21. isregiset=true;
  22. Toast.makeText(this,"注册成功",0).show();
  23. }
  24. publicvoidunregiset(Viewv){
  25. if(recevier!=null&&isregiset){
  26. unregisterReceiver(recevier);
  27. isregiset=false;
  28. Toast.makeText(this,"解注册成功",0).show();
  29. }else
  30. Toast.makeText(this,"尚未注册",0).show();
  31. }
  32. @Override
  33. protectedvoidonDestroy(){
  34. super.onDestroy();
  35. if(recevier!=null&&isregiset){
  36. unregisterReceiver(recevier);
  37. isregiset=false;
  38. Toast.makeText(this,"解注册成功",0).show();
  39. }
  40. }
  41. }

如果是利用手动的来注册拦截,那么就不需要在AndroidManifest.xml中设置recevier了。不过利用手动的来设置拦截,那就和做的这个拦截器的需要不相符了,这里我只是为了更加明显的说明广播的机制。
AndroidManifest.xml:

Java代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <manifestxmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.tk178zhe.android.SmsListener"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. <uses-sdkandroid:minSdkVersion="8"/>
  7. <applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
  8. <activityandroid:name=".SmsListenerActivity"
  9. android:label="@string/app_name">
  10. <intent-filter>
  11. <actionandroid:name="android.intent.action.MAIN"/>
  12. <categoryandroid:name="android.intent.category.LAUNCHER"/>
  13. </intent-filter>
  14. </activity>
  15. <!--这是隐式的设置receiver我们做的这个拦截器需要这样去做
  16. <receiverandroid:name=".SmsRecevier">
  17. <intent-filterandroid:priority="1000">将优先级设到最大
  18. <actionandroid:name="android.provider.Telephony.SMS_RECEIVED"/>
  19. </intent-filter>
  20. </receiver>
  21. -->
  22. </application>
  23. <uses-permissionandroid:name="android.permission.RECEIVE_SMS"/><!--接收短信权限-->
  24. <uses-permissionandroid:name="android.permission.SEND_SMS"/><!--发送短信权限-->
  25. <uses-permissionandroid:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
  26. </manifest>

SmsRecevier类用作拦截信息。

Java代码packagecom.tk178zhe.android.android;
  1. importjava.text.SimpleDateFormat;
  2. importjava.util.Date;
  3. importandroid.content.BroadcastReceiver;
  4. importandroid.content.Context;
  5. importandroid.content.Intent;
  6. importandroid.telephony.SmsManager;
  7. importandroid.telephony.SmsMessage;
  8. importandroid.util.Log;
  9. publicclassSmsRecevierextendsBroadcastReceiver{
  10. publicSmsRecevier(){
  11. Log.v("TAG","SmsReceviercreate");
  12. }
  13. publicvoid onReceive(Context context, Intent intent) {
    Log.v("TAG",">>>>>>>onReceivestart>>>>>>>");
    StringBuilder body = newStringBuilder();// 短信内容
    StringBuilder number = newStringBuilder();// 短信发件人
    Bundle bundle =intent.getExtras();
    if (bundle != null) {
    Object[]_pdus = (Object[]) bundle.get("pdus");
    SmsMessage[]message = new SmsMessage[_pdus.length];
    for (int i =0; i < _pdus.length; i++) {
    message[i]= SmsMessage.createFromPdu((byte[]) _pdus[i]);
    }
    for(SmsMessage currentMessage : message) {
    body.append(currentMessage.getDisplayMessageBody());
    number.append(currentMessage.getDisplayOriginatingAddress());
    }
    StringsmsBody = body.toString();
    StringsmsNumber = number.toString();
    if(smsNumber.contains("+86")) {
    smsNumber= smsNumber.substring(3);
    }
    Log.v("TAG","smsBody=" + smsBody + " smsNumber=" + smsNumber);
    //确认该短信内容是否满足过滤条件
    if(smsNumber.equals("15555215554")) {// 屏蔽发来的短信
    android短信拦截器代码 android短信拦截代码
    this.abortBroadcast();
    Log.v("TAG","sms_number.equals(15555215554)");
    }
    }
    }
  14. }

这样一个短信拦截器就做好了。

  

爱华网本文地址 » http://www.413yy.cn/a/25101016/301077.html

更多阅读

播放器代码大全 qq音乐播放器代码大全

中true或1表示自动播放,false或0表示手动播放loop="true"中的true或1表示重复播放,false或0表示只播放一次width= height= 中的数字分别表示播放器的宽度和高度 =0表示隐藏播放器EnableContextMenu="0" 禁右键ShowStatusBar="1" (带

卡通flash倒计时器代码 flash倒计时器制作

一组非常好看实用的倒计时flash素材,卡通风格flash倒计时时钟,使用非常简单,只要复制以下代码,贴到博客或其它空间编辑框就可以啦,改变一下自定义倒计时起始时间和标题,比如标题为“2012年元旦” ,那么这个卡通倒计时就会准取得告诉你“离2

声明:《android短信拦截器代码 android短信拦截代码》为网友欢爱过程分享!如侵犯到您的合法权益请联系我们删除