【问题标题】:telephony.listen , phoneStateListener not working when app is closedtelephony.listen ,phoneStateListener 在应用程序关闭时不起作用
【发布时间】:2021-12-14 16:00:49
【问题描述】:

此 PhoneStateListener 仅在应用程序为 API>28(P) 打开时才有效,但我想要传入/传出电话号码,即使应用程序已关闭,就像它在 API

if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.P) {
                phnNbr = intent?.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER).toString()
            } else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P && Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {
                val telephony =
                    context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
                telephony.listen(object : PhoneStateListener() {
                    override fun onCallStateChanged(state: Int, incomingNumber: String) {
                        super.onCallStateChanged(state, incomingNumber)
                        println("incomingNumber API>28: $incomingNumber")
                        phnNbr = incomingNumber
                    }
                }, PhoneStateListener.LISTEN_CALL_STATE)
            }

【问题讨论】:

    标签: android kotlin telephony phone-state-listener


    【解决方案1】:

    Android 操作系统保护用户隐私免受恶意应用窃取用户信息的正常行为。但是,您可以通过使用 系统事件广播接收器 来接收来电通知来解决此问题。 Here 是一个很好的榜样。该示例还不够,适用于当前的 android API 级别,您需要在收到调用时拥有 Foreground Service,然后运行前台服务并执行您的代码。

    【讨论】:

    • 我已经在扩展 BroadcastReceiver 的 MyCallReceiver 类中的 override fun onReceive 中编写了这段代码。这应该有效吗?
    • @RausonAli 你可以试试。
    • 我的方法有效,但是当应用程序长时间不使用时,他们拨出的电话不会先给电话 nbr,但它会在短时间内完成的下一个电话开始
    • @RausonAli 遇到了和你一样的问题,你能不能分享一下你的答案,以便对我和每个人都有帮助
    • @Curvegraph 希望我的回答有帮助。
    【解决方案2】:

    我正在使用 onCallStateChanged,因为我从文档中了解到 getStringExtra(EXTRA_INCOMING_NUMBER) 在 SDKgetStringExtra(EXTRA_INCOMING_NUMBER) 对我有用,并且这也解决了操作 Sim 2 时的错误响应。请务必处理对 BroadcastReceiver 的fun onReceive 的多次调用。

    【讨论】:

    • 对我来说,如果应用程序长时间空闲,广播接收器将无法工作
    • 大概多长时间?
    • 在某些设备中 30 到 50 分钟在某些设备中 3 或 4 小时后,现在我使用前台服务,它按预期工作
    猜你喜欢
    • 2017-06-23
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 2018-12-07
    • 1970-01-01
    • 2023-01-16
    • 1970-01-01
    相关资源
    最近更新 更多