我正试图在我的应用中通过我的服务拨打特定号码。我可以使用下面的代码成功地做到这一点。
AudioManager audioManager = (AudioManager)
getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.setSpeakerphoneOn(true);
然后我使用以下代码调出我的号码
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:" + "1234"));
callIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(callIntent);
但有时它不会设置扬声器。
我对我的清单有适当的许可
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
我从某个地方学到了我需要添加的东西
setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);
这是活动的,但因为我在服务,我不想打开我的活动,我怎么能有效地完成我的任务。
答案 0 :(得分:0)
我一直缺少的是我认为的上下文,就像我从我的服务中调用AudioManager服务一样,而不是我试图从侦听action.PHONE_STATE的广播接收器调用这些服务。因此,当我尝试拨号时,Telephony Manager的状态更改为EXTRA_STATE_OFFHOOK,然后我更改为audioManager.setSpeakerphoneOn(true),这似乎适用于每个呼叫。
全部谢谢!!!