AndroidManifest.xml文件详解(uses-permission)
语法(SYNTAX):
<uses-permissionandroid:name="string"/>
被包含于(CONTAINED IN):
<manifest>
说明(DESCRIPTION):
这个属性用于给应用程序授予正确的操作的所必须的权限。这些权限是在应用程序安装时被授予的,而不是在运行时授予的。
有关更多的权限信息,请看《AndroidManifest.xml文件详解(三)》文档中“权限”介绍(http://blog.csdn.net/fireofstar/article/details/7543067)和《Android的安全性和权限》(http://blog.csdn.net/fireofstar/article/details/7536803)。在android.Manifest.permission类中能够找到由基础平台定义的一个权限列表(http://developer.android.com/reference/android/Manifest.permission.html)。
属性(ATTRIBUTES):
android:name
这个属性用于定义权限的 名称。它能够是由该应用程序用<permission>元素定义的一个权限,也可以是由另外一个应用程序所定义的权限,还可以是有系统定义的 标准的权限,如:android:permission.CAMERA或android:permission.READ_CONTACTS等。就像例子 中所显示的那样,权限名通常要用包名做为前缀,以保证其唯一性。
被引入的版本(INTRODUCED IN):
API Level 1
应用程序自定义 <permission>
天哪,这篇文章终于说道如何自定义权限了,左盼右盼,其实这个自定义权限相当easy。为了方便叙述,我这边会用到两个app作为例子示范。
Permission App: used to define a new permission
这个作为定义权限的App,我称之为Permission App.
Client App: used to access the specified activity of Permission App
这个作为访问上述自定义权限的App,我称之为Client App
先看如何写Permission App
第一步
Permission App很简单,它的任务就是定一个Permission,使用< permission>标签即可,我们假设内容如下:
<permission
第二步
然后在定一个Activity,这个Activity很简单就是展示下一行字,如”Hello from Custiom Permission Activity!”这里就不详述。
第三步
最重要的地方:我们需要为这个Activity指明访问权限,权限即为我们刚申请的权限,这个需要同样需要在AndroidManifest.xml文件中标识,如下:
android:name="com.example.custompermission.MainActivity"
android:label="@string/app_name"
</activity>
这个Activity于是就被打上了必须使用” custom.permission.STARTACTIVITY”权限才能访问的印记。
接着写Client App
至于如何写Client App,那就so so so … easy了,只需两步:
第一步
在AndroidManifest.xml文件中首先申请权限,如下:
第二步
访问Permission App表明需要该权限的Activity,代码如下:
Intent in = new Intent();
startActivity(in);
大功告成
我们可以测试下效果,首先安装Permission App,然后接着安装Client App,结果如下:

点击之后

另外我曾经在Android Permission权限机制引子提到过Protection Level问题,这边我同样测试下这个Protection Level,下面结果中Y表示可以正常访问,N则表示不可以访问。

需要注意的是,使用自定义Permission的activity如果设置了
android:name="com.example.custompermission.MainActivity"
android:label="@string/app_name" android:permission="custom.permission.STARTACTIVITY">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
那就不能从Launcher中启动该App,因为只有你的Launcher必须使用了uses-permission去请求获取custom.permission.STARTACTIVITY权限,事实上你的Launcher是不具备已经请求自定义权限的。
Launcher会报:Application is not installed on your phone. 的错误.
AndroidManifest.xml文件详解(uses-permission)的更多相关文章
- AndroidManifest.xml文件详解(permission)
http://blog.csdn.net/think_soft/article/details/7574726 语法(SYNTAX): <permissionandroid:descriptio ...
- [转]AndroidManifest.xml文件详解
转自:http://www.cnblogs.com/greatverve/archive/2012/05/08/AndroidManifest-xml.html AndroidManifest.xml ...
- AndroidManifest.xml文件详解
本文为安全专家李洋的最新一篇专栏文章<AndroidManifest.xml文件详解>.AndroidManifest.xml是一个跟安全相关的配置文件,该配置文件是Android安全保障 ...
- AndroidManifest.xml文件详解(meta-data)
http://blog.csdn.net/think_soft/article/details/7567189 语法(SYNTAX): <meta-dataandroid:name=" ...
- AndroidManifest.xml文件详解(activity)(一)
<activity android:allowTaskReparenting=["true" | "false"] android:alwaysRetai ...
- 【Android 复习】:AndroidManifest.xml 文件详解
<?xml version="1.0" encoding="utf-8"?> <!-- package 包表示整个Android应用程序的主要 ...
- AndroidManifest.xml文件详解(application)
http://blog.csdn.net/think_soft/article/details/7557101 语法(SYNATX): <application android:allowTas ...
- AndroidManifest.xml文件详解(permission-group)
http://blog.csdn.net/think_soft/article/details/7578760 语法(SYNTAX): <permission-groupandroid:desc ...
- AndroidManifest.xml文件详解(activity)(四)
android:multiprocess 这个属性用于设置Activity的实例能否被加载到与启动它的那个组件所在的进程中,如果设置为true,则可以,否则不可以.默认值是false. 通常,一个新的 ...
随机推荐
- Linux修改用户密码
1. root修改自己 # passwd 2. root修改别人 # passwd oracle //修改oracle的密码
- @JsonField 修改json字段属性名称
在前后端分离的开发方式中,经常会遇到后端字段名称和前端字段名称定义不一致的问题,比如,后端定义的Bean中的字段名称为createAt,而前端用的字段名称为createTime.这种情况下可以通过在前 ...
- Linux系统网络基础知识及配置
一:DNS(domain name system)简介 DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而 ...
- python dlib 面部轮廓实时检测
1.dlib 实现动态人脸检测及面部轮廓检测 模型下载连接 : http://dlib.net/files/ # coding:utf-8 import cv2 import os import dl ...
- js 验证ip列表
如题. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title ...
- github新建托管项目及上传项目
一.新建托管项目 1.注册: 2.点击new repositories新建一个新项目: 3.输入项目名称及项目描述,Create repository: 4.点击右边栏的剪切板图标,记录下你的项目地址 ...
- 【Matlab】绘制饼状统计图
a=tabulate(b); % b为需要绘制饼图的原始数据列,生成新的一个矩阵a label={'1','2','3'} % 设定饼图每块扇形代表的内容 percent=num2str(a(:,3) ...
- 安全测试===sqlmap(贰)转载
十二.列举数据 这些参数用于列举出数据库管理系统信息.数据结构和数据内容. 1.一键列举全部数据 参数:--all 使用这一个参数就能列举所有可访问的数据.但不推荐使用,因为这会发送大量请求,把有用和 ...
- tex src
https://github.com/jepsonr/Text-Exercises https://github.com/Khan/KaTeX https://github.com/goldsboro ...
- delphi2006语言新特性:Record类型高级用法
delphi语言在传统的Records类型的基础上增加了许多像类一样的高级功能,如:Records可以有属性和方法(包括构造constructors),类属性,类方法,类静态字段和内嵌类型.下面这个示 ...