文章目录
- 权限声明
- uses-permission
- permission
- permission-group
- permission-tree
- 其他
- uses-feature
- 权限配置
权限声明
Android权限在AndroidManifest.xml
中声明,<permission>
、 <permission-group>
、<permission-tree>
和<uses-permission>
,其中最常用的是 <uses-permission>
以上四个标签必须是根元素manifest的直接子元素
<manifest><application></appliacation><permission /><permission-group /> <permission-tree /><uses-permission />
</manifest>
uses-permission
预定义权限,官方文档
列出几个常见权限:
<!-- 允许在应用外部存储上写入 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 允许在应用外部存储上读取 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 允许在可移动存储上挂载或卸载文件系统,第三方应用不可用 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
每个app都有自己的内部存储区,其他app不能访问,另外还有app外部的公共存储区。
出于习惯,/sdcard指的是手机内部固化的存储区域,是可申请访问的公共存储区。(对应上面说到的应用外部存储)存储权限
permission
自定义权限
permission-group
代表一组permission
permission-tree
为一组permission声明一个namespace
其他
uses-feature
是否需要某种硬件或软件资源
<uses-featureandroid:name="android.hardware.telephony"android:required="false" />
权限配置
- AndroidManifest.xml中进行权限声明,见权限声明
- MainActivity.java中配置(本节内容)
MainActivity.java需添加import android.Manifest;否则权限名会报错// 状态码private static int REQUEST_PERMISSION_CODE = 1;// 权限数组,需要的权限private static String[] PERMISSIONS_STORAGE = {Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS,Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 请求权限if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {if (ActivityCompat.checkSelfPermission(MainActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(MainActivity.this,PERMISSIONS_STORAGE, REQUEST_PERMISSION_CODE);}}