这个方法会被调用吗? (仍需要一个可接受的答案......详见答案)

时间:2015-12-14 03:56:11

标签: java android string android-activity optimization

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
            }
        }
    }

};

这需要此权限:

enter image description here

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

以下是我的应用,您可以看到尝试下载的权限请求:

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

2 个答案:

答案 0 :(得分:1)

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

您可以在未经许可的情况下使用AudioManager,请查看此信息 AUDIOFOCUS_LOSS called after a phone call in android

答案 1 :(得分:0)

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