记录思考

Android 6.0 之前的录音权限问题

Android 6.0 提出了新的权限管理机制。而在 6.0 之前,各个厂商也搞了一些自己的权限管理机制,五花八门。最后我们在适配 6.0 的时候,确实花了很多精力,但是总是还有很多问题一直没有解决。

Android 6.0 提出了新的权限管理机制。而在 6.0 之前,各个厂商也搞了一些自己的权限管理机制,五花八门。最后我们在适配 6.0 的时候,确实花了很多精力,但是总是还有很多问题一直没有解决。

在 6.0 之前,录音比较常见的问题就是,系统会在调用 MediaRecorder.start() 方法或者 MediaRecorder.prepare() 方法的时候,会弹出一个系统的授权提示框。这个提示框会挂起 start() 方法和 prepare() 方法,直到用户做出了选择后,才会回来继续往下执行。而如果你从调用 start() 方法或者 prepare() 方法就开始计时,那么你肯定会得到一个错误的时间的。或者你是通过按住按钮开始录音,松开结束录音的话,弹出的对话框也会打乱你的事件分发。

联想到之前 OPPO 手机弹出摄像头的事情。其实也是类似的问题,百度为了检测权限,调用了 Carame.start() 方法,这个时候,OPPO 的摄像头伸了出来,然后再缩回去。根据之前的经验,如果调用 start() 方法捕获到异常的话,就是没有获得权限。在一般手机上,可以通过这样的办法判断是否有权限。但是刚好那个 OPPO 手机的摄像头是伸缩的。结果大家都知道了。

- EOF -

本文链接 https://spacepage.top/articles/2018.08.13-11_38_39-Android_Permissoin_Audio.html,欢迎转载,转载请注明出处。