下面是一个基本的安卓5.0短信拦截源码的示例:
public class SMSReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (Telephony.Sms.Intents.SMS_RECEIVED_ACTION.equals(intent.getAction())) {
for (SmsMessage smsMessage : Telephony.Sms.Intents.getMessagesFromIntent(intent)) {
String messageBody = smsMessage.getMessageBody();
String address = smsMessage.getDisplayOriginatingAddress();
if (address.equals("Your desired number")) {
// TODO: Handle SMS Message
abortBroadcast();
}
}
}
}
}
这个源码的作用是在接收到短信时,比较发件人的号码是否是你想要拦截的号码。如果是,则会触发你指定的行为(目前这部分代码你需要自行完成),并且调用abortBroadcast()方法来阻止这个短信被其他应用(例如你的短信app)接收到。
注意,你需要在Manifest.xml里给你的app注册这个Broadcast Receiver并请求RECEIVE_SMS权限,如下所示:
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<application
.../>
<receiver
android:name=".SMSReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application>
这种短信拦截方式在一些安卓版本(例如6.0及以上)可能不再适用。你需要在用户同意的基础上为你的app设置为默认的短信应用,才能工作。所以这里的代码仅适用于安卓5.0的版本。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/170517.html