接着《80P 平台MMITEST和FACTORYTEST中FM测试项不能收听》疑问分析:
进入MMITEST和FACTORYTEST中FM测试项 - 插入耳机,会提示无法收听,但是FM应用中功能是ok的。为什么会产生这样的差异。
adb shell查看问题时候节点权限:
crw-rw---- 1 media media 231, 0 2019-09-02 07:06 fm
一度陷入僵局,提EService,MTK的回复居然也是
为什么FM应用进程在Media分组?为什么为什么?进行了以下思考:
一 查看FMAPK|MMITestAPK的是不是media用户组。
-rw-r--r-- 1 root root 650037 2019-09-06 06:58 FMRadio.apk
-rw-r--r-- 1 root root 48811054 2019-09-11 13:03 MMITest.apk
这是个误区 ,APK都是root用户组的,觉得应该权限和ROOT一样,百度发现理解是有问题的,这个权限不涉及APK运行时候的访问权限。
二查看Android.mk的签名是否一致。
发现都是LOCAL_CERTIFICATE := platform
三查看AndroidMainfest.xml文件是否 有android:sharedUserId,共享media相关的ID。
发现FM中没有此属性。
四 顺着MTK的回复百度android 用户组 权限相关。
看到了一个关键性文件:
frameworks/base/data/etc/platform.xml ===声明权限对应组
打开此文件发现:
在frameworks\base\core\res\AndroidManifest.xml中有声明权限:
直觉告诉我答案出来了:只要声明android.permission.ACCESS_BROADCAST_RADIO权限就可以获取media用户组,打开FM设备。
检查FM的AndroidMainfest.xml文件的确有此声明。
在MMITest中添加此权限验证,在dev/fm节点权限为0660的情况下open正常。
这题的一个疑惑解开了,还剩一个就是权限为什么会根据加密变化了???…………
参考
https://blog.csdn.net/zhgeliang/article/details/78805214
https://blog.csdn.net/u013686019/article/details/52753727Android添加用户组及自定义App权限