声明和使用权限

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>  
<manifest xmlns:android="http://schemas.android.com/apk/res/android"  
      package="com.scott.phone"  
      android:versionCode="1"  
      android:versionName="1.0">  
      
    <!-- 声明一个权限  -->  
    <permission android:protectionLevel="normal"   
                android:name="scott.permission.MY_CALL_PHONE"/>  
                  
    <application android:icon="@drawable/icon" android:label="@string/app_name">  
        <activity android:name=".MainActivity"  
                  android:label="@string/app_name">  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  
                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
        </activity>  
        <!-- 为Activity应用已定义的权限 -->  
        <activity android:name=".PhoneActivity"   
                  android:permission="scott.permission.MY_CALL_PHONE">  
            <intent-filter>  
                <!-- 注意这个action 在其他应用中可使用此action访问此Activity -->  
                <action android:name="scott.intent.action.MY_CALL"/>  
                <category android:name="android.intent.category.DEFAULT" />  
            </intent-filter>  
        </activity>  
    </application>  
    <!-- 在同一应用中访问PhoneActivity也需要加上权限 -->  
    <uses-permission android:name="scott.permission.MY_CALL_PHONE"/>  
    <uses-sdk android:minSdkVersion="8" />  
</manifest>  

需要注意的是,在声明权限时需要一个android:protectionLevel的属性,它代表“风险级别”。必须是以下值之一:

normal、dangerous、signature、signatureOrSystem。
normal表示权限是低风险的,不会对系统、用户或其他应用程序造成危害。
dangerous表示权限是高风险的,系统将可能要求用户输入相关信息,才会授予此权限。
signature告诉Android,只有当应用程序所用数字签名与声明此权限的应用程序所有数字签名相同时,才能将权限授给它。
signatureOrSystem告诉Android,将权限授给具有相同数字签名的应用程序或Android包类,这一级别适用于非常特殊的情况,比如多个供应商需要通过系统影像共享功能时。
另外一个是android:permissionGroup属性,表示一个权限组。可以将权限放在一个组中,但对于自定义权限,应该避免设置此属性。如果确实希望设置此属性,可以使用以下属性代替:android.permission-group.SYSTEM_TOOLS。  

需要注意的是,在声明权限时需要一个android:protectionLevel的属性,它代表“风险级别”。必须是以下值之一:

normal、dangerous、signature、signatureOrSystem。

normal表示权限是低风险的,不会对系统、用户或其他应用程序造成危害。

dangerous表示权限是高风险的,系统将可能要求用户输入相关信息,才会授予此权限。

signature告诉Android,只有当应用程序所用数字签名与声明此权限的应用程序所有数字签名相同时,才能将权限授给它。

signatureOrSystem告诉Android,将权限授给具有相同数字签名的应用程序或Android包类,这一级别适用于非常特殊的情况,比如多个供应商需要通过系统影像共享功能时。

另外一个是android:permissionGroup属性,表示一个权限组。可以将权限放在一个组中,但对于自定义权限,应该避免设置此属性。如果确实希望设置此属性,可以使用以下属性代替:android.permission-group.SYSTEM_TOOLS。

时间: 2024-10-13 00:37:46

声明和使用权限的相关文章

Android声明和使用权限

Android定义了一种权限方案来保护设备上的资源和功能.例如,在默认情况下,应用程序无法访问联系人列表.拨打电话等.下面就以拨打电话为例介绍一下系统对权限的要求.一般在我们的应用中,如果要用到拨打电话的功能,我们会这样编码: [java] view plaincopy Uri uri = Uri.parse("tel:12345678"); Intent intent = new Intent(Intent.ACTION_CALL, uri); startActivity(inten

Android清单文件具体解释(二) ---- 应用程序权限声明

我们知道,Android系统的各个模块提供了很强大的功能(比方电话,电源和设置等),通过使用这些功能.应用程序能够表现的更强大.更灵活.只是,使用这些功能并非无条件的.而是须要拥有一些权限.接下来,我们就開始解说还有一个很重要的知识点--应用程序权限声明.当中主要包含应用程序的权限声明,自己定义应用程序的訪问权限和SDK版本号限定. 1.<uses-permission>--应用程序的权限申请 权限 描写叙述 android.permission.ACCESS_NETWORK_STATE 同意

Android清单文件详解(二) ---- 应用程序权限声明

我们知道,Android系统的各个模块提供了非常强大的功能(比如电话,电源和设置等),通过使用这些功能,应用程序可以表现的更强大,更灵活.不过,使用这些功能并不是无条件的,而是需要拥有一些权限.接下来,我们就开始讲解另一个非常重要的知识点--应用程序权限声明,其中主要包括应用程序的权限声明,自定义应用程序的访问权限和SDK版本限定. 1.<uses-permission>--应用程序的权限申请 权限 描述 android.permission.ACCESS_NETWORK_STATE 允许应用

Android 6.0 运行时权限处理完全解析

一.概述 随着Android 6.0发布以及普及,我们开发者所要应对的主要就是新版本SDK带来的一些变化,首先关注的就是权限机制的变化.对于6.0的几个主要的变化,查看查看官网的这篇文章http://developer.android.com/intl/zh-cn/about/versions/marshmallow/android-6.0-changes.html,其中当然包含Runtime Permissions. ok,本篇文章目的之一就是对运行时权限处理的一个介绍,以及对目前权限相关的库

android 自定义权限

理解android的自定义权限,下面介绍一段代码.包括两个安卓项目,project 2试图调用project 1中的特权活动PrivActivity. android project 1 : application name: Custom Permission pacakage name: com.cust.perm 1) 特权活动 PrivActivity.java package com.cust.perm; import android.app.Activity; import andr

Android 开发技巧 - Android 6.0 以上权限大坑和权限检查基类封装

简单介绍 关于运行时权限的说法,早在Google发布android 6.0的时候,大家也听得蛮多的.从用户的角度来讲,用户是受益方,更好的保护用户的意思,而对于开发者来说,无疑增加了工作量. 对于6.0以下的权限在安装时,会根据权限声明产生一个权限列表,用户只有同意才能完成app的安装.而在6.0以后,不需要先对权限授权就可以安装app,对于权限的授权我们可以选择禁止. 在新的权限机制中,Google将权限分为两类: Normal Permissions(普通权限):不涉及用户隐私,不需要用户进

android permission权限与安全机制解析

总结整理了一下android权限相关的知识,分享一下: uses-permission 用法为<uses-permission android:name="string" android:maxSdkVersion="integer"/> 为了保证application的正常运行,需要系统授予app的权限声明.这个权限是在用户安装应用的时候授予的. android:name的值可以是其他app通过<permission>声明的(用于两个应用之

Android 6.0 运行时权限管理

android 6.0 对权限进行了严格的管理 新的权限策略讲权限分为两类,第一类是不涉及用户隐私的,只需要在Manifest中声明即可,比如网络.蓝牙.NFC等:第二类是涉及到用户隐私信息的,需要用户授权后才可使用,比如SD卡读写.联系人.短信读写等. Normal Permissions 此类权限都是正常保护的权限,只需要在AndroidManifest.xml中简单声明这些权限即可,安装即授权,不需要每次使用时都检查权限,而且用户不能取消以上授权,除非用户卸载App. ACCESS_LOC

android:各种访问权限Permission

在Android的设计中,资源的访问或者网络连接,要得到这些服务都需要声明其访问权限,否则将无法正常工作.在Android中这样的权限有很多种,这里将各类访问权限一一罗列出来,供大家使用时参考之用. android.permission.EXPAND_STATUS_BAR允许一个程序扩展收缩在状态栏,android开发网提示应该是一个类似Windows Mobile中的托盘程序 android.permission.FACTORY_TEST作为一个工厂测试程序,运行在root用户 android