首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为传入短信注册BroadcastReceiver

为传入短信注册BroadcastReceiver
EN

Stack Overflow用户
提问于 2013-04-10 04:17:29
回答 4查看 8.6K关注 0票数 9

如何注册BroadcastReceiver以拦截传入的短信

代码语言:javascript
复制
    IntentFilter intentFilter = new IntentFilter(Intent."what should be here");
     ctx.registerReceiver(outgoingReceiver, intentFilter);
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-10 04:47:39

尝试以下操作:

代码语言:javascript
复制
intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");

希望这能有所帮助。

票数 12
EN

Stack Overflow用户

发布于 2017-04-17 14:41:53

您应该检查权限

代码语言:javascript
复制
if (ContextCompat.checkSelfPermission(mActivity, Manifest.permission.RECEIVE_SMS) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(mActivity, new String[]{Manifest.permission.RECEIVE_SMS}, 0);
} else {
        // register sms receiver
        IntentFilter filter = new IntentFilter(Telephony.Sms.Intents.SMS_RECEIVED_ACTION);
        registerReceiver(smsReceiver, filter);
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    if (ContextCompat.checkSelfPermission(mActivity, Manifest.permission.RECEIVE_SMS) != PackageManager.PERMISSION_GRANTED) {

    } else {
        // register sms receiver
        IntentFilter filter = new IntentFilter(Telephony.Sms.Intents.SMS_RECEIVED_ACTION);
        registerReceiver(smsReceiver, filter);
}
    }
票数 2
EN

Stack Overflow用户

发布于 2013-04-10 04:49:14

在清单中注册具有最高优先级的接收者:

代码语言:javascript
复制
    <receiver android:name=".SmsReceiver"> 
        <intent-filter android:priority="9999"> 
            <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
        </intent-filter> 
    </receiver>        

创建BroadcastReceiver类:

代码语言:javascript
复制
public class SmsReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
    }
}

实现onReceive方法:

代码语言:javascript
复制
Bundle bundle = intent.getExtras();
if (bundle != null && bundle.containsKey("pdus")) {
    Object[] pdus = (Object[]) bundle.get("pdus");
    SmsMessage sms = SmsMessage.createFromPdu((byte[]) pdus[0]);
    String senderNumber = sms.getOriginatingAddress();
    if( senderIsInBlackList(senderNumber)) {
        abortBroadcast();
    }
}                
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15911670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档