【问题标题】:Will this method be called? (Still needs an accepted answer...See details in answer)这个方法会被调用吗? (仍然需要一个公认的答案...查看答案中的详细信息)
【发布时间】:2016-03-19 11:45:50
【问题描述】:

TL;DR:

在通话过程中,onPause 方法是否被调用?

我拥有不想要的 READ_PHONE_STATE 权限。那么,onPause 方法是否会在电话中被调用,以便我可以在那里静音我的应用程序音频?

private PhoneStateListener phoneStateListener = new PhoneStateListener() {
    @Override
    public void onCallStateChanged(int state, String incomingNumber) {

        if (doesUserHavePermission()) {


            if (state == TelephonyManager.CALL_STATE_RINGING) {
                onPhoneCallInterrupt(); //Method I made that mutes audio for phone call
            } else if (state == TelephonyManager.CALL_STATE_IDLE) {
            } else if (state == TelephonyManager.CALL_STATE_OFFHOOK) {
                onPhoneCallInterrupt(); //Method I made that mutes audio for phone call
            }
        }
    }

};

这需要此权限:

我想摆脱它。那么我必须明确地接听电话吗?或者我可以在 onPause() 中静音吗?

这是我的应用程序,您可以在尝试下载时查看权限请求:

https://play.google.com/store/apps/details?id=com.culybrace.ruchir.buttonsmasher&hl=en

【问题讨论】:

  • onPause 一旦活动/片段进入后台就会被调用,所以如果电话应用程序有布局,我想它会工作
  • @RuchirBaronia 为什么你不想要 READ_PHONE_STATE 权限?
  • 创建后台服务来检查您的手机当前状态....如果手机正在响铃或激活,则将您的音频静音
  • @HetalUpadhyay ...检查当前状态需要该权限...

标签: java android string android-activity optimization


【解决方案1】:

根据我的经验,这取决于手机。 有2个案例。 1. 当铃声响起时 -> 新的通话活动开始。 :在这种情况下,调用 onPause 是因为新的 Activity 在您的应用程序上方。 2.当铃声响起时->铃声窗口显示在应用程序上。(不是活动) :在这种情况下,不会调用 Activity 回调。并且用户可以像打电话之前一样使用该应用程序。

你可以在未经许可的情况下使用 AudioManager,看看这个 AUDIOFOCUS_LOSS called after a phone call in android

【讨论】:

  • 我查看了链接,但没有任何帮助...您知道如何检查来电吗?
【解决方案2】:

如果您不知道该方法是否会被调用,您只需在插入模拟器/外部设备时按Shift + F9 即可使用调试功能,将调试器放在您想要的行上查看它是否运行,按F9 移动到下一个调试器,按F8 移动到下一行。

【讨论】:

  • 好的,很好的建议。我如何知道是否有来电?
猜你喜欢
  • 1970-01-01
  • 2014-02-22
  • 2012-05-10
  • 1970-01-01
  • 2011-02-09
  • 1970-01-01
  • 2017-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多