【问题标题】:Auto answer call in android >=23 Level Apiandroid中的自动接听电话> = 23 Level Api
【发布时间】:2016-08-16 00:33:09
【问题描述】:

我已经尝试了很多自动接听来电的替代方案。

1) 使用私有 API 尝试过(结束通话有效,接听无效)

2) 使用 SendOrderedBroadcast 和本文中提到的各种其他方法 How can incoming calls be answered programmatically in Android 5.0 (Lollipop)?

如果我使用私有 api,它会抛出 SecurityException(请求 MODIFY_DEVICE_STATE 权限),如果我使用上面帖子中的方法,它会显示以下警告

"由于没有窗口焦点而取消事件:KeyEvent { action=ACTION_UP, keyCode=KEYCODE_HEADSETHOOK, scanCode=0, metaState=0, flags=0x20, repeatCount=0, eventTime=7550277, downTime=7550277, deviceId=-1 , 来源=0x101 }"

如果有任何解决此问题的方法,请帮助我,我使用的是 Android 版本 23。

提前谢谢..

【问题讨论】:

    标签: android android-intent android-view


    【解决方案1】:

    我已经通过在 TelephonyManager 中使用 AnswerRingingCall 函数解决了这个问题,该函数将由电话状态侦听器 (TelephonyManager.CALL_STATE_RINGING) 触发,当您使用此方法时,它实际上会引发安全异常(要求 MODIFY_STATE 权限),但这通过将 apk 推送到 /system/priv-app 将在 Rooted 设备中绕过

    【讨论】:

    • 我们可以在不root手机的情况下做到这一点吗?
    【解决方案2】:

    为此需要做一些额外的工作来接听来电。

    1) 您需要拥有“DRAW OVER OTHER APPS”的访问权限,即屏幕覆盖权限,这还将包括清单中的 android.permission.SYSTEM_ALERT_WINDOW 权限。

    2) 你需要实现一个广播接收器来检查来电。

    3) 当检测到 CALL_STATE_RINGING 时,使用 WindowsManager 启动一个新的活动来吸引其他应用程序。此外,在此活动中设置唤醒锁,以使手机在处于锁屏模式时唤醒。

    4) 还可以使用此活动来使用应答呼叫方法,这将工作,因为现在您的应用程序处于顶部和前台。

    5) 终止此活动,如果需要,从此活动中打开您的项目,然后终止此活动。

    新的解决方案来了,看看这个问题:

    Programmatically accept call in Nougat

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多