在程序中启用android的手机扬声器

时间:2013-08-13 12:12:37

标签: android

我编写了一个应用来处理来电并自动应答的应用。我想将语音设置为手机的扬声器,它在Android上工作正常,最多4个但不是4.1和4.2。

代码:

AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.setSpeakerphoneOn(true);

我需要在我的清单中获得许可:

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

我在LogCat中收到一个静默异常,说明我没有MODIFY_PHONE_STATE权限,但我在清单中定义了这个:

java.lang.SecurityException: Neither user 10046 nor current process has android.permission.MODIFY_PHONE_STATE.
at android.os.Parcel.readException(Parcel.java:1425)
at android.os.Parcel.readException(Parcel.java:1379)
at com.android.internal.telephony.ITelephony$Stub$Proxy.silenceRinger(ITelephony.java:577)
at net.farayan.android.driveranswer.AutoAnswerIntentService.answerPhoneAidl(AutoAnswerIntentService.java:155)
at net.farayan.android.driveranswer.AutoAnswerIntentService.onHandleIntent(AutoAnswerIntentService.java:92)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.os.HandlerThread.run(HandlerThread.java:60)

2 个答案:

答案 0 :(得分:1)

作为per docsMODIFY_PHONE_STATE权限不适合您:

  

允许修改电话状态 - 开机,mmi等   不包括拨打电话。

     

不适用于第三方应用程序。

它曾用于2.3之前的版本,但它从v.2.3开始更改,因为该版本权限仅授予系统应用程序,这意味着要么预先安装到ROM上的系统文件夹中,要么使用制造商签名他们的安全证书。

答案 1 :(得分:0)

<uses-permission android:name="android.permission.CALL_PHONE" />

将上方添加到您的清单文件