我编写了一个应用来处理来电并自动应答的应用。我想将语音设置为手机的扬声器,它在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)
答案 0 :(得分:1)
作为per docs,MODIFY_PHONE_STATE
权限不适合您:
允许修改电话状态 - 开机,mmi等 不包括拨打电话。
不适用于第三方应用程序。
它曾用于2.3之前的版本,但它从v.2.3开始更改,因为该版本权限仅授予系统应用程序,这意味着要么预先安装到ROM上的系统文件夹中,要么使用制造商签名他们的安全证书。
答案 1 :(得分:0)
<uses-permission android:name="android.permission.CALL_PHONE" />
将上方添加到您的清单文件