Android -- 自定义权限

在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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375283.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Win32 路径操作API

路径操作相关API 路径截断与合并函数 PathRemoveArgs 去除路径的参数 PathRemoveBackslash 去除路径最后的反斜杠“\” PathAddBackslash 在路径最后加上反斜杠“\” PathRemoveBlanks 去除路径前后的空格 PathAddExtension 在文件路径后面加上扩展名 Pa…

dbms_output.put_line长度限制问题

dbms_output.put_line长度限制问题对于10g以上版本(包括10g), dbms_output.put_line的最大长度限制是32767. 如果报错buffer overflow, 执行如下语句即可:set serveroutput ON SIZE UNLIMITED FORMAT WORD_WRAPPED对于10g以下版本dbms_output.put_line最大长度限制是255.转载于…

js深入研究之Person类案例

<script type"text/javascript"> /* 定义一个Person类 */ function Person(name, age) {this.name name;this.age age; } /* 添加两个方法getName getAge */ Person.prototype {getName: function() {return this.name;},getAge: function() {return this.a…

C++名称粉碎

C name mangling 1: ?0: 构造器&#xff0c;?1 析构器 2: QAE: public __thiscall AAE: private __thiscall QBE: public __thiscall const 3: 返回值和参数类型 B&#xff1a;const D&#xff1a;char E&#xff1a;unsigned char F&#xff1a;…

一款基于css3鼠标经过圆形旋转特效

今天给大家分享一款基于css3鼠标经过圆形旋转特效。当鼠标经过的时候图片边框颜色旋转&#xff0c;图片显示详情。该实例适用浏览器&#xff1a;IE8、360、FireFox、Chrome、Safari、Opera、傲游、搜狗、世界之窗。效果图如下&#xff1a; 在线预览 源码下载 实现的代码。 ht…

Delphi与Windows 7下的用户账户控制(UAC)机制

WIN7/WIN8/WIN10, Vista提供的UAC机制&#xff0c;它的主要目的是防止对于操作系统本身的恶意修改。 对于Delphi程序的影响&#xff0c;UAC主要在于以下几点&#xff1a; 1、由于UAC机制&#xff0c;Delphi对于系统的操作可能无声的失败&#xff0c;而同样的程序&#xff0c;在…

[转]深入理解Java 8 Lambda(类库篇——Streams API,Collectors和并行)

以下内容转自&#xff1a; 作者&#xff1a;Lucida 微博&#xff1a;peng_gong 豆瓣&#xff1a;figure9 原文链接&#xff1a;http://zh.lucida.me/blog/java-8-lambdas-insideout-library-features 本文谢绝转载&#xff0c;如需转载需征得作者本人同意&#xff0c;谢谢。 --…

Eclipse生成jar包

前言: 本宅因为要写XXX软件的一个插件,来用用java,接触3天后 在打jar包上卡住了..... 经过大量的百度搜索后有如下几种解决方案: 解决方案: 一.安装Fatjar 在线安装地址:http://kurucz-grafika.de/fatjar 悲剧的是我怎么也安装不上去,于是放弃(在线下载包什么 我的Eclipse版…

Buffer和Cache的区别

现在不都是只有page cache了吗&#xff1f; buffer pages其实也是page cache里面的页。只是多了一层抽象&#xff0c;通过buffer_head来进行一些访问管理对,从Linux算法实现的角度&#xff0c;page cache和buffer cache目前是一样的&#xff0c;但是从功能抽象和具体应用来讲&a…

Android刷机

这里也有一篇比较详细的 http://blog.csdn.net/qq1084283172/article/details/52334452 官网刷机包 https://developers.google.com/android/images#hammerhead 我的机器是Nexus 5 一. 安装驱动 如何进入fastboot模式 1. 拔掉数据线&#xff0c;将手机关机 2. 关机后同时按…

中西医与算法之间的联系

中西医的特点网上有非常多讨论&#xff0c;概括起来就是西医治病&#xff0c;中医不治病 这个观点有部分道理&#xff0c;但不全对 中医落后的原因有非常多&#xff0c;但假设能用计算机的算法改进一下应该有非常大提升 比方翻译&#xff0c;比方路线规划&#xff0c;比方信号识…

程序的版式

版式虽然不会影响程序的功能&#xff0c;但会影响可读性。程序的版式追求清晰、美观&#xff0c;是程序风格的重要构成因素。可以把程序的版式比喻为“书法”。好的“书法”可让人对程序一目了然&#xff0c;看得兴致勃勃。差的程序“书法”如螃蟹爬行&#xff0c;让人看得索然…

java算法---五家共井

古代数学巨著《九章算数》中有这么一道题叫“五家共井&#xff0c;甲二绠&#xff08;汲水用的井绳&#xff09;不足&#xff0c;如&#xff08;接上&#xff09;乙一绠&#xff1b;乙三绠不足&#xff0c;如丙一绠&#xff1b; 丙四绠不足&#xff0c;如丁一绠&#xff1b;丁五…

看雪逆向学习导航

---------------------------------------------------------------------------- 工具教程: OllyDbg IDA Windbg GDB 基本方法 参考资料 逆向原理 ----------------------------------------------------------------------------

viewController的生命周期

一、结构 按结构可以对iOS的所有ViewController分成两类&#xff1a; 1、主要用于展示内容的ViewController&#xff0c;这种ViewController主要用于为用户展示内容&#xff0c;并与用户交互&#xff0c;如UITableViewController&#xff0c;UIViewController。 2、用于控制和显…

android123 zhihuibeijing 新闻中心-新闻 页签 ViewPagerIndicator实现

## ViewPagerIndicator ## 使用导入ViewPagerIndicator库的方式相当于可以改源码&#xff0c;打包编译Eclips可以自动完成。ViewPager指针项目&#xff0c;在使用ViewPager的时候能够指示ViewPager所在的位置&#xff0c;就像Google Play中切换的效果一样&#xff0c;还能使用…

java 获取随机数字的三种方法

1 //方法1 (数据类型)2 //(最小值Math.random()*(最大值-最小值1))3 // 例:4 (int)(1Math.random()*(10-11)) //从1到10的int型随数5 6 方法2 获得随机数7 for (int i0;i<30;i)8 {9 System.out.println((int)(1Math.random()*10)); 10 } 11 (int)(1Math.random()*10) 1…

LVS原理及实践(NAT模式)

LVS无论NAT及DR模式&#xff0c;均要求LVS server和real server在同一个网段内&#xff0c;NAT需要把lvs server当作各个realserver的默认网关&#xff0c;DR模式采用修改mac地址直接从数据链路层转发、要求必须在同一个物理网段内 LVS-NAT的实验网络拓扑&#xff1a; 采用青…

基于Maven的spring_security入门

配置文件的修改点没什么变化&#xff0c;可以参考&#xff1a;http://blog.csdn.net/ouitiken/article/details/8830505 pom.xml的依赖参考&#xff1a; <dependencies><!-- Commons --><dependency><groupId>commons-dbcp</groupId><artifac…

使用Vitamio打造自己的Android万能播放器(5)——在线播放(播放优酷视频)

前言 为了保证每周一篇的进度&#xff0c;又由于Vitamio新版本没有发布&#xff0c; 决定推迟本地播放的一些功能&#xff08;截图、视频时间、尺寸等&#xff09;&#xff0c;跳过直接写在线播放部分的章节。从Vitamio的介绍可以看得出&#xff0c;其支持http、m3u8等多种网络…