当前位置: 首页 > 知识库问答 >
问题:

Oreo BroadcastReceiver SMS接收到的

宓博实
2023-03-14

我正在开发的一个应用程序允许用户自己读取确认短信的内容,输入验证码。对于使用早于Oreo(API 26)的操作系统的所有设备,BroadcastReceiver的实现工作正常,并允许正确接收SMS。在这个实现中,我的意思是将receiver对象放置在AndroidManifest中。

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

但是,从Oreo开始,必须显式地将BroadcastReceivers注册到适当的上下文。我对此执行如下:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            smsReceiver = new SmsReceiver();
            IntentFilter intentFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
            intentFilter.addAction(Telephony.Sms.Intents.DATA_SMS_RECEIVED_ACTION);
            this.registerReceiver(smsReceiver, intentFilter);
        }

在接收到对Manifest.permission.Read_SMS的权限时执行此代码块。SmsReceiver类扩展了BroadcastReceiver并覆盖了它的onReceive()方法。

在此,我有几个问题:

是不是有什么东西我错过了,可能导致我的接收者没有捕捉到到达的短信?

共有1个答案

吕俊才
2023-03-14

以前我请求的是-manifest.permission.read_sms,但这不起作用,然后我将权限更改为-manifest.permission.reeceive_sms,然后它在oreo中开始工作,我还在manifest中指定了接收方,我不知道这是否有帮助,但这让我有了一天

   public static void requestPermissionForReadSMS(Fragment fragment) {
    //        if (fragment.shouldShowRequestPermissionRationale(Manifest.permission.READ_SMS)) {
    //            Helpers.showRequestPermissionAlertDialog(fragment, fragment.getString(R.string.read_sms_permission), fragment.getString(R.string.permission_request));

    //        } else {
            fragment.requestPermissions(new String[]{Manifest.permission.RECEIVE_SMS},
                    Constants.READ_SMS_PERMISSION);
   // }

        }
 类似资料:
  • 当监听设备后,会返回接收到的消息数据。 请求方式: 无 返回值: "|4|2|5|message|" 返回接收到的消息 参数 message 返回的消息内容

  • 本文向大家介绍Android BroadcastReceiver接收收到短信的广播,包括了Android BroadcastReceiver接收收到短信的广播的使用技巧和注意事项,需要的朋友参考一下 一、知识介绍   1、broadcastReceiver是广播接受者,四大组件之一。   2、Android中内置了很多系统级别的广播,可以在应用程序中得到各种系统的状态信息。   3、使用场景:  

  • 当订阅的topic接收到消息后,会返回接收到的消息数据。 请求方式: 无 返回值: "|4|1|5|topic|message|\r" 返回接收到的消息 参数 topic 返回消息的topic message 返回的消息内容

  • 问题内容: 我写了一个文件 并如下 我已经启动了redis服务器,也已经启动了celery服务器。但是当我运行task.py时,出现以下错误: 可能的原因是什么 问题答案: 嘿,我解决了我添加的一件事 在我的档案中,我获得了成功。

  • 我正在学习GCM(谷歌云消息传递,旧的不建议使用的名称是C2DM)。我使用不同的设备。操作运行良好,即使应用程序关闭。但是在nexus平板电脑上,当应用程序关闭时会发生错误。如果应用程序正在进行,我的GCM代码在我尝试的所有设备上都能工作。现在:我寻找这些问题,我发现有其他的错误清单。如果我的清单是错误的,为什么除了nexus平板电脑以外的其他设备都正确执行我的代码?我可以认为我的清单是错误的吗?

  • 我正在尝试用kafka绑定构建一个简单的云流应用程序。让我描述一下设置。1、我有一位制作人正在制作主题1 2。有一个流活页夹,经过一些处理后将主题1绑定到主题2。 我是这些技术的新手。无法弄清楚这里出了什么问题。有人能帮忙吗?