最近几年看了很多大神的博客和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 | 与权限相关的"风险级别"。必须是以下值之一: |
是 |
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热点的信息 |