AndroidMainfest.xml详解——<uses-permission/>

最近几年看了很多大神的博客和GitHub,自己想写、但是每次都觉得太麻烦了,而都放弃了。今天开始我打算把知识系统的和小伙伴们一起回顾分享一下,每篇文章可能不长,但是会按照类别找一些零散的时间依次更新。正如标题所讲,先从清单中的<uses-permission/>说起。

当我们在Android系统总使用某些权限时,需要在 AndroidMainfest.xml清单中加入相应的权限,他是系统的一种安全机制

uses-permission作用:告诉Android系统并向系统请求所需的权限。

语法规则:    

    <uses-permission android:name="android.permission.CALL_PHONE" 
                     android:maxSdkVersion="integer"/>

android:name——指定申请权限的名字,可以使标准的系统权限,可以是app的自定义权限,也可以是其他app中的权限

android:maxSdkVersion——设置该权限的最大版本号,因为有些权限再新的版本中就无需再申请了。

app的系统权限:(见中文附录)链接:https://developer.android.com/reference/android/Manifest.permission.html

app自定义权限&app申请其他应用的程序:

例:假设有一个名为PermisssionOtherActivity(其他组件方法类似),向其中添加一个自定义的权限。配置如下:

<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"] />
属性 含义 是否必须
name  自定义的权限名称,需要遵循Android权限定义命名方案:*.permission.* 
protectionLevel

与权限相关的"风险级别"。必须是以下值之一:
normal, dangerous, signature, signatureOrSystem ,取决于保护级别,在确定是否授予权限时,系统可能采取不同的操作。
normal 表示权限是低风险的,不会对系统、用户或其他应用程序造成危害;
dangerous 表示权限是高风险的,系统将可能要求用户输入相关信息,才会授予此权限;
signature 表示只有当应用程序所用数字签名与声明引权限的应用程序所用数字签名相同时,才能将权限授给它;
signatureOrSystem 表示将权限授给具有相同数字签名的应用程序或android 包类。这一保护级别适和于非常特殊的情况,比如多个供应商需要通过系统映像共享功能时

permissionGroup

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

label 可使用它对权限进行简短描述
description 使用它提供对权限用途和所保护对象的更有用的描述
icon 权限可以与资源目录以外的图标相关联 ( 比如@drawable/myicon)
















申请完权限后需要在activity中生命如下:

<activity
    android:name="com.example.test.PermisssionOtherActivity" >
    android:exported="true"------控制是否可以被其他应用程序打开
    android:permission="*.permission.*" >
</activity>
也可以为Activity设置一个空的action name来达到让其他应用程序访问的目的

<activity
    android:name="com.example.test.PermisssionOtherActivity" >
    <intent-filter>
        <action android:name="" />
    </intent-filter>
</activity>
此时如果有一个应用程序的名为permissionActivity想要访问另外一个应用程序名为PermisssionOtherActivity,则需要加上如下权限申请。

<uses-permission android:name="*.permission.*" >
</uses-permission>
此种方式经常应用于从一个应用程序跳转到另外一个应用程序的某个页面时的权限控制,如果不设置权限,可以直接使用intent来实现

intent.setClassName("com.example.android1", "com.example.test.PermisssionOtherActivity")

访问登记属性

android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限

获取错略位置

android.permission.ACCESS_COARSE_LOCATION,通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米

获取精确位置

android.permission.ACCESS_FINE_LOCATION,通过GPS芯片接收卫星的定位信息,定位精度达10米以内

访问定位额外命令

android.permission.ACCESS_LOCATION_EXTRA_COMMANDS,允许程序访问额外的定位提供者指令

获取模拟定位信息

android.permission.ACCESS_MOCK_LOCATION,获取模拟定位信息,一般用于帮助开发者调试应用

获取网络状态

android.permission.ACCESS_NETWORK_STATE,获取网络信息状态,如当前的网络连接是否有效

访问Surface Flinger

android.permission.ACCESS_SURFACE_FLINGER,Android平台上底层的图形显示支持,一般用于游戏或照相机预览界面和底层模式的屏幕截图

获取WiFi状态

android.permission.ACCESS_WIFI_STATE,获取当前WiFi接入的状态以及WLAN热点的信息

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值