当前位置:   article > 正文

[Q]Sending non-protected broadcast问题分析

sending non-protected broadcast

有同事遇到发送广播接收不到的问题,分析log发现是system进程发送non-protected广播的问题。Ams在发送广播时,对于systemApp会要求广播必须是声明在frameworks\base\core\res\AndroidManifest.xml里面的protected-broadcast。这样可以避免三方垃圾应用也发送这些广播来捣蛋。 

  1. 03-30 09:35:31.829 3827 4459 E ActivityManager: Sending non-protected broadcast
  2. droidlogic.hdr.policy.source_1 from system 4556:com.android.tv.settings/1000 pkg
  3. com.android.tv.settings

检查system进程权限的函数 

  1. private void checkBroadcastFromSystem(Intent intent, ProcessRecord callerApp,
  2. String callerPackage, int callingUid, boolean isProtectedBroadcast, List receivers) {
  3. if ((intent.getFlags() & Intent.FLAG_RECEIVER_FROM_SHELL) != 0) {
  4. // Don't yell about broadcasts sent via shell
  5. return;
  6. }
  7. final String action = intent.getAction();
  8. if (isProtectedBroadcast
  9. || Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action)
  10. || Intent.ACTION_DISMISS_KEYBOARD_SHORTCUTS.equals(action)
  11. || Intent.ACTION_MEDIA_BUTTON.equals(action)
  12. || Intent.ACTION_MEDIA_SCANNER_SCAN_FILE.equals(action)
  13. || Intent.ACTION_SHOW_KEYBOARD_SHORTCUTS.equals(action)
  14. || Intent.ACTION_MASTER_CLEAR.equals(actio
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号