Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用PhoneStateListener打开扬声器_Java_Android - Fatal编程技术网

Java 使用PhoneStateListener打开扬声器

Java 使用PhoneStateListener打开扬声器,java,android,Java,Android,我使用的是PhoneStateListener,所以当用户接到电话或开始通话时,扬声器会立即打开 PhoneStateListener phoneStateListener = new PhoneStateListener() { @Override public void onCallStateChanged(int state, String incomingNumber) { if (state ==

我使用的是PhoneStateListener,所以当用户接到电话或开始通话时,扬声器会立即打开

    PhoneStateListener phoneStateListener = new PhoneStateListener()
    {
        @Override
        public void onCallStateChanged(int state, String incomingNumber)
        {
            if (state == TelephonyManager.CALL_STATE_RINGING) 
            {


            } else if(state == TelephonyManager.CALL_STATE_IDLE)
            {

                AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

                audioManager.setSpeakerphoneOn(false);

            } else if(state == TelephonyManager.CALL_STATE_OFFHOOK)
            {

                AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
                audioManager.setSpeakerphoneOn(true);
            }
            super.onCallStateChanged(state, incomingNumber);
        }
    };

    TelephonyManager mgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);

    if(mgr != null) 
    {
        mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
    }
这是我使用的代码。在我安装jelly bean之前,它工作得很好,现在我注意到它只在用户接到电话时才打开扬声器,但如果他开始通话,它什么也不做。我发现了它

TelephonyManager似乎只适用于传入呼叫


对于传出呼叫,请使用IntentFilter的intent android.intent.action.NEW_outgoing_CALL string参数创建广播侦听器,并且不要忘记在AndroidMenifest中授予处理传出呼叫的权限。这会奏效的。每当有外呼时,广播侦听器中就会调用onReceive。

奇怪,当电话在另一端响起时(拨打外呼时),状态应该是OFFHOOK。嗯,你能帮我一下吗?我是java和android开发的新手。如何制作广播侦听器?上面写着02-20 18:36:36.164:E/AndroidRuntime(19345):原因:java.lang.SecurityException:权限拒绝:不允许从pid=19345,uid=10183发送广播android.intent.action.NEW_OUTGOING_调用您需要权限,在这种情况下,请将其放入清单中。这个问题也得到了回答,它并不是要让你问每一个问题,因为你不太了解Java。尝试阅读android开发网站。也可以搜索关于广播听众的答案。很多答案已经存在。例如,如果此答案对上述问题有帮助,请将其标记为已回答。不要老是问新问题。我们不会创建您的整个应用程序。当你尝试了所有的方法却无法成功时,我们会帮助你。因此,在询问之前,请先尝试自己制作广播收听者。我理解,我很抱歉询问广播收听者的情况,因为我已经找到了制作广播收听者的方法。事情是,我从一开始就按照你说的做了。我在清单中添加了“android.permission.Processing_OUTGOING_CALLS”(android.permission.Processing_OUTGOING_CALLS),然后我得到的错误信息是:“拒绝许可…”所以没有回答。