在android系统的安全模型中,应用程序在默认的情况下不可以执行任何对其他应用程序,系统或者用户带来负面影响的操作。如果应用需要执行某些操作,就需要声明使用这个操作对应的权限。 (在manifest文件中 添加标记)。

app可以自定义属于自己的permission 或属于开发者使用的同一个签名的permission。定义一个permission 就是在menifest文件中添加一个permission标签。

<permission android:description="string resource"  android:icon="drawable resource"  android:label="string resource"  android:name="string"  android:permissionGroup="string"  android:protectionLevel=["normal" | "dangerous" |   "signature" | "signatureOrSystem"] />  
  • android:description :对权限的描述,一般是两句话,第一句话描述这个权限所针对的操作,第二句话告诉用户授予app这个权限会带来的后果
  • android:label: 对权限的一个简短描述
  • android:name :权限的唯一标识,一般都是使用 报名加权限名
  • android:permissionGroup: 权限所属权限组的名称
  • android:protectionLevel: 权限的等级。 normal 是最低的等级,声明次权限的app,系统会默认授予次权限,不会提示用户;dangerous  权限对应的操作有安全风险,系统在安装声明此类权限的app时会提示用户 ;signature  权限表明的操作只针对使用同一个证书签名的app开放 ;signatureOrSystem  与signature类似,只是增加了rom中自带的app的声明

android:name 属性是必须的,其他的可选,未写的系统会指定默认值

Code

首先创建了两个app,app A ,app B ; app A中注册了一个BroadcastReceiver ,app B 发送消息

app A的menifest文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"  package="com.example.testbutton"  android:versionCode="1"  android:versionName="1.0" >  <uses-sdk  android:minSdkVersion="7"  android:targetSdkVersion="15" />  <!-- 声明权限 -->  <permission android:name="com.example.testbutton.RECEIVE" />  <application  android:icon="@drawable/ic_launcher"  android:label="@string/app_name"  android:theme="@style/AppTheme" >  <activity  android:name=".MainActivity"  launcheMode="singleTask"  android:configChanges="locale|orientation|keyboardHidden"  android:screenOrientation="portrait"  android:theme="@style/android:style/Theme.NoTitleBar.Fullscreen" >  <intent-filter>  <action android:name="android.intent.action.MAIN" />  <category android:name="android.intent.category.LAUNCHER" />  </intent-filter>  </activity>  <!-- 注册Broadcast Receiver,并指定了给当前Receiver发送消息方需要的权限 -->  <receiver  android:name="com.example.testbutton.TestButtonReceiver"  android:permission="com.example.testbutton.RECEIVE" >  <intent-filter>  <action android:name="com.test.action" />  </intent-filter>  </receiver>  </application>  </manifest>  

app B 的menifest 文件内容:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"  package="com.example.testsender"  android:versionCode="1"  android:versionName="1.0" >  <uses-sdk  android:minSdkVersion="7"  android:targetSdkVersion="15" />  <!-- 声明使用指定的权限 -->  <uses-permission android:name="com.example.testbutton.RECEIVE" />  <application  android:icon="@drawable/ic_launcher"  android:label="@string/app_name"  android:theme="@style/AppTheme" >  <activity  android:name=".MainActivity"  android:label="@string/title_activity_main" >  <intent-filter>  <action android:name="android.intent.action.MAIN" />  <category android:name="android.intent.category.LAUNCHER" />  </intent-filter>  </activity>  </application>  </manifest>  

这样app B 给app A 发送消息,A就可以收到了,若未在app B的menifest文件中声明使用相应的权限,app B发送的消息,A是收不到的。

同样应用于Activity等组件。

另外,也可在app B 的menifest文件中声明权限时,添加android:protectionLevel="signature",指定app B只能接收到使用同一证书签名的app 发送的消息。

我是天王盖地虎的分割线

参考:http://berdy.iteye.com/blog/1782854

转载于:https://www.cnblogs.com/yydcdut/p/5042481.html

Android -- 自定义权限相关推荐

  1. Android自定义权限CVE漏洞分析 (IEEE论文)

    文章目录 前言 自定义权限早期漏洞 1.1 Android权限机制 1.2 自定义权限升级漏洞 1.3 confused deputy attack 自定义权限近期漏洞 2.1 黑盒Fuzz工具原理 ...

  2. Android自定义权限与使用

    本篇博客介绍下Android开发者如何自定义权限,进而如何将自己的部分组件暴露.并介绍客户端如何调用这些暴露的组件. 1. 如何自定义权限 Android允许我们使用permission标签,在Man ...

  3. 自定义权限 android,android自定义权限

    今天在研究android自定权限的时候,发现一个错误: 11-25 16:16:24.819 1747-1747/com.example.android.renderscriptintrinsic E ...

  4. android 自定义权限弹窗_Android-开源通用弹窗的封装CommonPopupWindow(总得向别人学点什么)...

    终于也是自己封装一些东西了,不管烂不烂,还是自我鼓励了一把!(之前学maven发布也是这个目的) 开源地址: FanChael/CommonPopupWindow 弹窗效果如下: @tip后面会逐渐完 ...

  5. android组件权限,Android中Permission权限机制的具体使用

    由上篇Android Permission权限机制引子,我们知道Android 通过在每台设备上实施了基于权限的安全策略来处理安全问题,采用权限来限制安装应用程序的能力.本篇文章继续来探讨和Andro ...

  6. Android permission权限详解

    权限是一种安全机制.Android权限主要用于限制应用程序内部某些具有限制性特性的功能使用以及应用程序之间的组件访问.在Android开发中,基本上都会遇到联网的需求,我们知道都需要加上联网所需要的权 ...

  7. android id 重名_Android App 自定义权限重名不能安装解决办法

    场景1. A 应用 有两个版本 第一个 正式版 第二个测试版    测试版的包名 = 正式版+test ,在Android studio 中 也就是 applicationId  . 两个版本都可以成 ...

  8. 自定义权限 android,Android权限控制之自定义权限

    天哪,这篇文章终于说道如何自定义权限了,左盼右盼,其实这个自定义权限相当easy.为了方便叙述,我这边会用到两个app作为例子示范. Permission App: used to define a ...

  9. android获取应用内自定义权限与权限使用情况

    先上图,看看最终我们可以得到什么样子的结果: 截图来自 android开发工具箱, 点我下载 android开发工具箱 应用内权限信息分为两个部分,我们先来看应用内权限使用情况. PackageMan ...

最新文章

  1. 学习笔记-express路径问题
  2. Node.js获取本机IP
  3. andriod sdk哪些是必须下载安装的包
  4. PPT 下载 | 神策数据算法专家:推荐系统的实践与思考(上)
  5. Java调用虚拟键盘输入法_Android 点击屏幕空白处收起输入法软键盘(手动打开)...
  6. oracle 备份批处理,windows下oracle自动备份批处理
  7. SQL ORDER BY Clause
  8. Web之间跳转和信息共享、Servlet的三大作用域对象、动态网页JSP
  9. Drools环境搭建
  10. JAVA从零开始做微信公众号开发(三)[微信公众平台返回码说明]
  11. python文本交换_有没有办法用python交换文本文件中的两行文本?
  12. 设计模式之路 | 外观模式
  13. 互联网晚报 | 9月16日星期五 | ​B站回应诉争“哔哩哔哩”商标被驳回;​苹果占国内高端机70%份额;​蔚来手机被曝明年发布...
  14. 跨境电商面临“寒冬”考验,如何转型升级入局新赛道(Starday)
  15. LoRa的码片速率chip rate
  16. 【高性能计算背景】《并行计算教程简介》翻译 - 中文 - 3 / 4
  17. 设计简约风格节约用水公益海报的PS教程
  18. 去中心化借贷协议Trister’s Lend全面内测并提交合约代码安全审计
  19. 如何批量在图片上加统一的文字?
  20. UE4 什么是蓝图,如何用来快速创建原型?

热门文章

  1. 用maven运行指定java类main方法
  2. Redis-cluster集群【第一篇】:redis安装及redis数据类型
  3. 基本算法研究1-冒泡排序算法测试
  4. 关于erlang的套接字编程
  5. zbox mysql_20190213云服务器部署禅道
  6. 光纤接口怎么接 图解_光纤的数据比网线快很多倍,但为什么没有在家庭局域网中普及呢?...
  7. java能否调用com_java调用com
  8. libuv 原理_Libuv初理解
  9. Python报错UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe0 in position 0: ordinal not in range
  10. shell获取当前执行脚本的路径