首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >华为短信检索api不起作用,华为设备

华为短信检索api不起作用,华为设备
EN

Stack Overflow用户
提问于 2021-01-21 15:21:12
回答 2查看 813关注 0票数 2

我正试图在华为设备中检索OTP。但这是行不通的。

我已经在华为的开发者控制台中创建了这个应用程序,满足了所有的要求。

下面是我用来检索sms的代码。

代码语言:javascript
复制
private fun initSmsManager() {

        val task = ReadSmsManager.start(this@MainActivity)

        task.addOnCompleteListener {

            if (task.isSuccessful) {
                // The service is enabled successfully. Continue with the process.
                Toast.makeText(this, "ReadSms service has been enabled.", Toast.LENGTH_LONG).show()
            } else
                Toast.makeText(this, "The service failed to be enabled.", Toast.LENGTH_LONG).show()
        }
        task.addOnSuccessListener(this, OnSuccessListener {
                if(task.isSuccessful){
                    Toast.makeText(this, "ReadSms service has been enabled.", Toast.LENGTH_LONG).show()
                    myReceiver = MyBroadcastReceiver();
                    val intentFilter = IntentFilter(READ_SMS_BROADCAST_ACTION)
                    registerReceiver(myReceiver, intentFilter)
                }
        })
        task.addOnFailureListener(this, OnFailureListener {
            Toast.makeText(this,it.message,Toast.LENGTH_SHORT).show();
        })
    }

广播接收机

代码语言:javascript
复制
class MyBroadcastReceiver : BroadcastReceiver() {

    companion object {
        val TAG = MyBroadcastReceiver::class.java.simpleName
    }

    override fun onReceive(context: Context?, intent: Intent?) {

        val bundle = intent!!.extras
        if (bundle != null) {
            val status: Status? = bundle.getParcelable(ReadSmsConstant.EXTRA_STATUS)
            if (status?.statusCode == CommonStatusCodes.TIMEOUT) {

                // Service has timed out and no SMS message that meets the requirement is read. Service ended.
                // doSomethingWhenTimeOut()
            } else if (status?.statusCode == CommonStatusCodes.SUCCESS) {

                if (bundle.containsKey(ReadSmsConstant.EXTRA_SMS_MESSAGE)) {

                    // An SMS message that meets the requirement is read. Service ended.
                    //doSomethingWhenGetMessage(bundle.getString(ReadSmsConstant.EXTRA_SMS_MESSAGE))

                    bundle.getString(ReadSmsConstant.EXTRA_SMS_MESSAGE)?.let {

                        Log.d(TAG, it)

                        val local = Intent()
                        local.action = "service.to.activity.transfer"
                        local.putExtra("sms", it)
                        context!!.sendBroadcast(local)
                    }
                }
            }
        }
    }
}

这方面的任何帮助都是有益的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-22 02:53:57

请确认以下各点:

  1. 检查是否启用用于接收SMS验证代码的广播。您可以通过执行断点调试或记录日志来做到这一点。
  2. 检查SMS消息格式是否符合自动读取SMS消息的规则。

有关详细信息,请参阅文档

hash_value 检查字段是否正确.

  1. 如果在前面的检查中没有出现错误,请提供完整的日志跟踪,然后我将尝试找出在这个问题上可能出错的地方。:)
票数 1
EN

Stack Overflow用户

发布于 2021-01-25 08:20:47

所有代码运行良好,在调试模式下运行良好,当我构建已发布的apk时,keystore也更改了版本模式。如果您知道如何在发布模式下运行,请告诉我们。也许华为的开发者帐户有一些变化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65830443

复制
相关文章

相似问题

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