国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android編程實現攔截短信并屏蔽系統Notification的方法

2020-04-11 11:11:40
字體:
來源:轉載
供稿:網友

本文實例講述了Android編程實現攔截短信并屏蔽系統Notification的方法。分享給大家供大家參考,具體如下:

攔截短信有幾個關鍵點:

1.android接收短信時是以廣播的方式

2.程序只要在自己的Manifest.xml里加有"接收"SMS的權限

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

3.要寫個廣播接收類

public class smsreceiveandmask extends BroadcastReceiver {  private String TAG = "smsreceiveandmask";  @Override  public void onReceive(Context context, Intent intent) {}public class smsreceiveandmask extends BroadcastReceiver {  private String TAG = "smsreceiveandmask";  @Overridepublic void onReceive(Context context, Intent intent) {} 

4.Manifest.xml的receiver標簽里要加入intent-filter ,action為

<action android:name="android.provider.Telephony.SMS_RECEIVED" /><action android:name="android.provider.Telephony.SMS_RECEIVED" />

5.重要的是要在這個intent-filter上加上priority優先級,以使自己接收到SMS優先于系統或其它軟件

<receiver android:name=".smsreceiveandmask" >       <intent-filter android:priority="1000">          <action android:name="android.provider.Telephony.SMS_RECEIVED" />       </intent-filter>     </receiver> <receiver android:name=".smsreceiveandmask" ><intent-filter android:priority="1000"><action android:name="android.provider.Telephony.SMS_RECEIVED" /></intent-filter></receiver>

6.當自己的程序接收到要屏蔽的SMS后,用 this.abortBroadcast();來結束廣播的繼續發給別的程序,這樣系統就不會收到短信廣播了,Notification也不會有提示了

// 第三步:取消 if (flags_filter) {  this.abortBroadcast();}// 第三步:取消if (flags_filter) {this.abortBroadcast();}

源碼如下:

Manifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"   package="com.hwttnet.test.smsreceiveandmask" android:versionCode="1"   android:versionName="1.0">  <uses-sdk android:minSdkVersion="3" />  <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>  <application android:icon="@drawable/icon" android:label="@string/app_name">    <receiver android:name=".smsreceiveandmask" >      <intent-filter android:priority="1000">        <action android:name="android.provider.Telephony.SMS_RECEIVED" />       </intent-filter>    </receiver>  </application> </manifest>
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.hwttnet.test.smsreceiveandmask" android:versionCode="1"android:versionName="1.0"><uses-sdk android:minSdkVersion="3" /><uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission><application android:icon="@drawable/icon" android:label="@string/app_name"><receiver android:name=".smsreceiveandmask" ><intent-filter android:priority="1000"><action android:name="android.provider.Telephony.SMS_RECEIVED" /></intent-filter></receiver></application></manifest>

BroadcastReceiver類:

package com.hwttnet.test.smsreceiveandmask;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.telephony.SmsMessage;import android.util.Log;public class smsreceiveandmask extends BroadcastReceiver {  private String TAG = "smsreceiveandmask";  @Override  public void onReceive(Context context, Intent intent) {    Log.v(TAG, ">>>>>>>onReceive start");    // 第一步、獲取短信的內容和發件人    StringBuilder body = new StringBuilder();// 短信內容    StringBuilder number = new StringBuilder();// 短信發件人    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());      }      String smsBody = body.toString();      String smsNumber = number.toString();      if (smsNumber.contains("+86")) {        smsNumber = smsNumber.substring(3);      }      // 第二步:確認該短信內容是否滿足過濾條件      boolean flags_filter = false;      if (smsNumber.equals("10086")) {// 屏蔽10086發來的短信        flags_filter = true;        Log.v(TAG, "sms_number.equals(10086)");      }      // 第三步:取消      if (flags_filter) {        this.abortBroadcast();      }    }    Log.v(TAG, ">>>>>>>onReceive end");  }}

希望本文所述對大家Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 民权县| 陕西省| 中方县| 久治县| 武宣县| 阿勒泰市| 海口市| 苏尼特右旗| 宜春市| 苏尼特右旗| 乌拉特后旗| 双柏县| 汾阳市| 三亚市| 灵台县| 虹口区| 潜江市| 三河市| 正蓝旗| 彭泽县| 华池县| 内乡县| 泰安市| 绥德县| 万山特区| 镇原县| 德阳市| 塔河县| 冷水江市| 郴州市| 五峰| 洛宁县| 确山县| 无极县| 梁平县| 岐山县| 博白县| 孟州市| 鄄城县| 林口县| 顺平县|