赞
踩
有同事遇到发送广播接收不到的问题,分析log发现是system进程发送non-protected广播的问题。Ams在发送广播时,对于systemApp会要求广播必须是声明在frameworks\base\core\res\AndroidManifest.xml里面的protected-broadcast。这样可以避免三方垃圾应用也发送这些广播来捣蛋。
- 03-30 09:35:31.829 3827 4459 E ActivityManager: Sending non-protected broadcast
- droidlogic.hdr.policy.source_1 from system 4556:com.android.tv.settings/1000 pkg
- com.android.tv.settings
检查system进程权限的函数
- private void checkBroadcastFromSystem(Intent intent, ProcessRecord callerApp,
- String callerPackage, int callingUid, boolean isProtectedBroadcast, List receivers) {
- if ((intent.getFlags() & Intent.FLAG_RECEIVER_FROM_SHELL) != 0) {
- // Don't yell about broadcasts sent via shell
- return;
- }
-
- final String action = intent.getAction();
- if (isProtectedBroadcast
- || Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action)
- || Intent.ACTION_DISMISS_KEYBOARD_SHORTCUTS.equals(action)
- || Intent.ACTION_MEDIA_BUTTON.equals(action)
- || Intent.ACTION_MEDIA_SCANNER_SCAN_FILE.equals(action)
- || Intent.ACTION_SHOW_KEYBOARD_SHORTCUTS.equals(action)
- || Intent.ACTION_MASTER_CLEAR.equals(actio
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。