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

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

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

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

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

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

首先,在Androidmanifest.xml中定义新的权限RECV_XXX(自定义的权限都需要先声明),例如:

<permission android:name =
"com.android.permission.RECV.XXX"/>

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

sendBroadcast("com.andoird.XXX_ACTION", "com.android.permission.RECV_XXX");

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

例如:

<users-permission android:name =
"com.android.permission.RECV.XXX"/>

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

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

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

<permission android:name =
"com.android.permission.SEND.XXX"/>

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

  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中也声明使用该权限即可,如下:

<users-permission android:name =
"com.android.permission.SEND.XXX"/>

Android Broadcast 和 BroadcastReceiver的权限机制的更多相关文章

  1. Android权限机制

    Android系统是运行在Linux内核上的,Android与Linux分别有自己的一套严格的安全及权限机制, 很多像我这样的新手,尤其是习惯了windows低安全限制的用户,很容易在这方面弄混淆,下 ...

  2. Android权限管理之Permission权限机制及使用

    前言: 最近突然喜欢上一句诗:"宠辱不惊,看庭前花开花落:去留无意,望天空云卷云舒." 哈哈~,这个和今天的主题无关,最近只要不学习总觉得生活中少了点什么,所以想着围绕着最近面试过 ...

  3. Android Notification和权限机制探讨

    近期为了在部门内做一次小型的技术分享.深入了解了一下Notification的实现原理.以及android的权限机制.在此做个记录.文章可能比較长,没耐心的话就直接看题纲吧. 先看一下以下两张图 图一 ...

  4. Android开发-API指南-系统权限

    System Permissions 英文原文:http://developer.android.com/guide/topics/security/permissions.html 采集日期:201 ...

  5. Android——Broadcast Receive 相关知识总结贴

    Android系统中的广播(Broadcast)机制简要介绍和学习计划 http://www.apkbus.com/android-99858-1-1.html android----BroadCas ...

  6. Android 上SuperUser获取ROOT权限原理解析

    Android 上SuperUser获取ROOT权限原理解析 一. 概述 本文介绍了android中获取root权限的方法以及原理,让大家对android 玩家中常说的“越狱”有一个更深层次的认识. ...

  7. Android Broadcast Security(转)

    原文地址:http://drops.wooyun.org/tips/4393 0x00 科普 Broadcast Recevier 广播接收器是一个专注于接收广播通知信息,并做出对应处理的组件.很多广 ...

  8. android apk的签名和权限问题

    一. android apk的签名问题(http://blog.csdn.net/lyq8479/article/details/6401093) 1.为什么要给Android应用程序签名?      ...

  9. Android数据存储之Android 6.0运行时权限下文件存储的思考

    前言: 在我们做App开发的过程中基本上都会用到文件存储,所以文件存储对于我们来说是相当熟悉了,不过自从Android 6.0发布之后,基于运行时权限机制访问外置sdcard是需要动态申请权限,所以以 ...

随机推荐

  1. C++匿名命名空间

    当定义一个命名空间时,可以忽略这个命名空间的名称:      namespce {          char c;          int i;          double d;      } ...

  2. APP 自动化测试封装结构模式

    原文出处http://www.toutiao.com/a6268089772108333314/ 做过UI自动化测试同学,都会深深体会几个痛点:维护量大.适配量大.编写代码巨大等.基于这些问题,大家都 ...

  3. 模板继承(extend)——(Day68)

    模板继承 (extend) Django模版引擎中最强大也是最复杂的部分就是模版继承了.模版继承可以让您创建一个基本的“骨架”模版,它包含您站点中的全部元素,并且可以定义能够被子模版覆盖的 block ...

  4. html基本标签介绍及应用

    <!-- html标签 特征: 1.空白折叠现象 2.对空格和换行不敏感 3.标签要严格封闭 p标签的嵌套 多注意!!!!!! html中: 1.行内标签(不换行) (1)在一行内显示 span ...

  5. python 课堂笔记-while

    #Author:zyl age_of_oldboy = 56 count = 0 while count < 3: guess_age = int(input("guess age:& ...

  6. get app id

    Install Download the Web AppBuilder for ArcGIS (Developer Edition) ZIP file to your local drive and ...

  7. [转]HBase hbck——检察HBase集群的一致性

    Hbase提供了hbck命令来检查各种不一致问题.hbck的名字仿效了HDFS的fsck命令,后者是一个用于检查HDFS中不一致问题的工具.下面这段非常易懂的介绍出自于hbck的源程序. 检查数据在M ...

  8. 【笔记】c++文件

    1.文件. #include <iostream> #include <cstdio> #include <string> #include <cstring ...

  9. IIS DirectoryEntry

    DirectoryEntry是.Net给我们的一大礼物,他的名字我们就知道他的功能--目录入口.使用过ADSI的人都知道操作IIS,WinNT这些时,我们还需要提供他们的Path,操作IIS时,这个P ...

  10. MongoDB快速入门(十三)- 聚合count、distinct和group

    1. count:     --在空集合中,count返回的数量为0.     > db.test.count()    0    --测试插入一个文档后count的返回值.    > d ...