首页 > 解决方案 > 未经许可可以使用 TelephonyManager READ_PHONE_STATE

问题描述

我制作了一个音乐播放器应用程序,并在电话被呼叫时暂停歌曲,我使用此代码。

但这需要 READ_PHONE_STATE 权限,这可能会吓跑一些用户,所以我想知道是否有可能在不请求此权限的情况下以另一种方式实现相同的事情?

我的代码

private void callStateListener(){
        //incomingCallPause: checkbox value if user wants to pause when there is an incoming call.
        incomingCallPause = storageUtil.loadSwitchOnCall();
        mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        mPhoneStateListener = new PhoneStateListener(){
            @Override
            public void onCallStateChanged(int state, String incomingNumber) {
                switch (state) {
                    case TelephonyManager.CALL_STATE_OFFHOOK:
                        if (mediaPlayer != null){
                            pauseSong();
                        }
                        break;
                    case TelephonyManager.CALL_STATE_RINGING:
                        if (incomingCallPause && mediaPlayer != null) {
                            pauseSong();
                            NotificationBuilder(PlaybackStatus.PAUSED);
                            incomingCall = true;
                        }
                        break;
                    case TelephonyManager.CALL_STATE_IDLE:
                        if (mediaPlayer != null) {
                            if (incomingCall) {
                                incomingCall = false;
                                NotificationBuilder(PlaybackStatus.PLAYING);
                                if (!mediaPlayer.isPlaying()){
                                    mediaPlayer.start();
                                }
                            }
                        }
                        break;
                }
                super.onCallStateChanged(state, incomingNumber);
            }
        };

标签: javaandroidpermissionstelephonymanager

解决方案


根据 Android 官方文档,您需要定义清单权限才能使用 TelephonyManager。

需要 Manifest.permission.READ_PHONE_STATE

推荐链接: https ://developer.android.com/reference/android/telephony/TelephonyManager


推荐阅读