安卓学习笔记——关于短信的屏蔽

</pre>公司做一个游戏项目,需要屏蔽掉扣费短信,因为之前做过类似相关的项目,本以为得心应手的自己,做的时候发现4.0以上的系统总是没法屏蔽,研究了一下QQ通讯录和360的源码(由于是混淆过的,看的老费劲了),发现了一些很有趣东西,为了抢占第一时间获取到短信,他们同时写了一个BroadcastReceiver,在manifest文件中注册为开机启动<p></p><p></p><pre name="code" class="html"> <receiver
            android:name="com.order.smsfilter.SMSReceive"
            android:permission="android.permission.BROADCAST_SMS" >
            <intent-filter android:priority="2147483647" >
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
            <intent-filter android:priority="2147483647" >
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>
在SMSRecieve中做了一个操作,开启一个服务,服务中再对这个Reciver进行注册,并且也是权限为最大整数
<pre name="code" class="java">	if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
			Intent service = new Intent(context, SmsService.class);
			context.startService(service);
		}


 

private static final String a = "android.permission.BROADCAST_SMS";
  private bz b = new bz();
  private boolean c;

  public void a(Context paramContext)
  {
    try
    {
      IntentFilter localIntentFilter1 = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
      localIntentFilter1.addCategory("android.intent.category.DEFAULT");
      localIntentFilter1.setPriority(2147483647);
      paramContext.registerReceiver(this, localIntentFilter1, "android.permission.BROADCAST_SMS", null);
      IntentFilter localIntentFilter2 = new IntentFilter("android.provider.Telephony.SMS_RECEIVED2");
      localIntentFilter2.addCategory("android.intent.category.DEFAULT");
      localIntentFilter2.setPriority(2147483647);
      paramContext.registerReceiver(this, localIntentFilter2, "android.permission.BROADCAST_SMS", null);
      IntentFilter localIntentFilter3 = new IntentFilter("android.provider.Telephony.GSM_SMS_RECEIVED");
      localIntentFilter3.addCategory("android.intent.category.DEFAULT");
      localIntentFilter3.setPriority(2147483647);
      paramContext.registerReceiver(this, localIntentFilter3, "android.permission.BROADCAST_SMS", null);
      IntentFilter localIntentFilter4 = new IntentFilter("android.provider.Telephony.WAP_PUSH_RECEIVED");
      localIntentFilter4.addDataType("application/vnd.wap.mms-message");
      localIntentFilter4.addCategory("android.intent.category.DEFAULT");
      localIntentFilter4.setPriority(2147483647);
      paramContext.registerReceiver(this, localIntentFilter4, "android.permission.BROADCAST_SMS", null);
      IntentFilter localIntentFilter5 = new IntentFilter("android.provider.Telephony.WAP_PUSH_RECEIVED");
      localIntentFilter5.addDataType("application/vnd.wap.sic");
      localIntentFilter5.addDataType("application/vnd.wap.slc");
      localIntentFilter5.addDataType("application/vnd.wap.coc");
      localIntentFilter5.addCategory("android.intent.category.DEFAULT");
      localIntentFilter5.setPriority(2147483647);
      paramContext.registerReceiver(this, localIntentFilter5, "android.permission.BROADCAST_SMS", null);
      this.c = true;
      return;
    }
    catch (IntentFilter.MalformedMimeTypeException localMalformedMimeTypeException)
    {
      localMalformedMimeTypeException.printStackTrace();
    }
  }

  abstract void a(SmsEntity paramSmsEntity, BroadcastReceiver paramBroadcastReceiver);

  public boolean a()
  {
    return this.c;
  }

  public void b(Context paramContext)
  {
    if (!this.c)
      return;
    paramContext.unregisterReceiver(this);
    this.c = false;
  }

  public void onReceive(Context paramContext, Intent paramIntent)
  {
    SmsEntity localSmsEntity = null;
    this.b.a(paramIntent);
    if (this.b.a())
      localSmsEntity = this.b.b();
    if ((localSmsEntity == null) || (TextUtils.isEmpty(localSmsEntity.phonenum)) || (TextUtils.isEmpty(localSmsEntity.body)) || (SDKUtil.getSDKVersion() <= 4))
      return;
    a(localSmsEntity, this);
  }
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值