在Android应用开发中,有时会遇到以下两种情况,

1. 一些敏感的广播并不想让第三方的应用收到 ;

2. 要限制自己的Receiver接收某广播来源,避免被恶意的同样的ACTION的广播所干扰。

在这些场景下就需要用到广播的权限限制。

第一种场景: 谁有权收我的广播?

在这种情况下,可以在自己应用发广播时添加参数声明Receiver所需的权限。

首先,在Androidmanifest.xml中定义新的权限RECV_XXX,例如:

[html] view plaincopyprint?
  1. <permission android:name = "com.android.permission.RECV_XXX"/>

然后,在Sender app发送广播时将此权限作为参数传入,如下:

[java] view plaincopyprint?
  1. sendBroadcast("com.android.XXX_ACTION", "com.android.permission.RECV_XXX");

这样做之后就使得只有具有permission权限的Receiver才能接收此广播要接收该广播,在Receiver应用的AndroidManifest.xml中要添加对应的RECV_XXX权限。

例如:

[html] view plaincopyprint?
  1. <uses-permission android:name="com.android.permission.RECV_XXX"></uses-permission>

第二种场景: 谁有权给我发广播?

在这种情况下,需要在Receiver app的<receiver> tag中声明一下Sender app应该具有的权限。

首先同上,在AndroidManifest.xml中定义新的权限SEND_XXX,例如:

[html] view plaincopyprint?
  1. <permission android:name="com.android.SEND_XXX"/>

然后,在Receiver app的Androidmanifest.xml中的<receiver>tag里添加权限SEND_XXX的声明,如下:

[html] view plaincopyprint?
  1. <receiver android:name=".XXXReceiver"
  2. android:permission="com.android.permission.SEND_XXX">
  3. <intent-filter>
  4. <action android:name="com.android.XXX_ACTION" />
  5. </intent-filter>
  6. </receiver>

这样一来,该Receiver便只能接收来自具有该send_permission权限的应用发出的广播。

要发送这种广播,需要在Sender app的AndroidManifest.xml中也声明使用该权限即可,如下:

[html] view plaincopyprint?
  1. <uses-permission android:name="com.android.permission.SEND_XXX"></uses-permission>

如此,可以用来对广播的来源与去处进行简单的控制。同样,对Activity 和 ContentProvider的访问权限控制也类似。

转载于:https://www.cnblogs.com/helinzi/p/5167087.html

Android Broadcast 和 BroadcastReceiver的权限限制相关推荐

  1. 【Android Broadcast】BroadcastReceiver

    作为安卓中的四大组件广播的作用也是非常大的,听名字我们或许就知道他的功能啦!接下来就回顾.总结下这个重要的组件. 一.简介 1.分类 广播发送者:发送广播,发布广播后,订阅过的接收者就可以接收到广播. ...

  2. Android Broadcast Security

    0x00 科普 Broadcast Recevier 广播接收器是一个专注于接收广播通知信息,并做出对应处理的组件.很多广播是源自于系统代码的──比如,通知时区改变.电池电量低.拍摄了一张照片或者用户 ...

  3. Android四大组件---BroadcastReceiver

    前言: BroadcastReceiver(广播接收器),属于 Android 四大组件之一 在 Android 开发中,BroadcastReceiver 的应用场景非常多 今天,我将详细讲解关于B ...

  4. Android——广播(BroadcastReceiver)

    1. 简介 BroadcastReceiver (广播接收器),属于Android四大组件之一 Android 广播分为两个角色:广播发送者.广播接收者 用于监听 / 接收 应用发出的广播消息,并做出 ...

  5. Android开发之BroadcastReceiver

    Android开发之BroadcastReceiver BroadcastReceiver介绍 广播的种类 标准广播(Normal Broadcast) 有序广播(Ordered Broadcast) ...

  6. Android : Broadcast

    Broadcast是Application之间交换数据最简单的一种方法. Broadcast组成部分 Broadcast 功能,由发送Broadcast的Sender和接收的Receiver组成. S ...

  7. android Broadcast学习

    android Broadcast学习 其实所谓的静态注册,动态注册,是指接收广播的时候,是静态注册接收还是动态注册接收,发送的时候不分静态,动态 以发送intent为例, 一共分4种情况,以每次注册 ...

  8. Android Broadcast详解

    在 Android 中使用 Activity, Service, Broadcast, BroadcastReceiver    活动(Activity) - 用于表现功能    服务(Service ...

  9. Android详细教程(基础篇):二十八、Android 广播机制BroadcastReceiver

    广播机制(BroadcastReceiver) 11.1. BroadcastReceiver简介 在实际应用中,我们常需要等,等待系统抑或其他应用发出一道指令,为自己的应用擦亮明灯指明方向.而这种等 ...

最新文章

  1. 用python编程代码画图形_python编程:如何使用python代码绘制出哪些常见的机器学习图像?...
  2. 分布式架构的session问题
  3. Python(7)-程序执行的原理
  4. php 字母数字混合排序,JavaScript_基于JS实现数字+字母+中文的混合排序方法,在上篇文章给大家介绍了JavaScr - phpStudy...
  5. 在Objective-C中分类对象和方法
  6. suse linux操作系统安全加固(服务关闭)
  7. Java中getclass(),class()与iinstanceof的区别与联系
  8. linux下类似Bus Hound的工具
  9. 2020年最新-Java集合面试题
  10. AlphaBlend 详解
  11. 51系列单片机IO模试设置
  12. 爬取B站20万+条弹幕,我学会了如何成为B站老司机
  13. lol8月21号服务器维护,8月21日lol维护公告最新 8.21lol维护到几点
  14. 安装kubernetes dashboard时开发环境,运行gulp local-up-cluster任务一直显示wating for a heapster
  15. 能修改IE地址栏关键字键入搜索的默认搜索引擎?
  16. MSAA,SSAA,CSAA,CFAA...如何正确地为您的游戏设置抗锯齿模式
  17. (C语言)写一个函数,实现两个字符串的比较, 即自己写一个strcmp函数,函数原型为int strcmp(const char* p1, const char* p2)
  18. level2--writeup
  19. 173:vue+openlayers:解决国内openstreetmap地图加载不出来的问题(代码示例)
  20. 后端逆袭,一份不可多得的PHP学习指南

热门文章

  1. 准备结婚,大家买的三金都有哪些?
  2. 「职业生涯规划」真的有必要做吗?
  3. 餐饮为什么很难做到薄利多销?
  4. 手机升降式摄像头有什么优缺点?
  5. 创业失败感悟第二十九天
  6. 编写int testsyscall()系统调用–响应函数
  7. 大家一般用什么工具测试HTTP和json接口?
  8. idea一直在 downloading plugins for ... 失败
  9. ubuntu15.04源失效问题修复
  10. POSIX 信号量学习与思考