if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {//安卓11文件权限// 先判断有没有权限if (Environment.isExternalStorageManager()) {//已有权限-----------------onHeadClick();} else {Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);intent.setData(Uri.parse("package:" + getPackageName()));startActivity(intent);return;}
}
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {// TODO: Consider calling//    ActivityCompat#requestPermissions// here to request the missing permissions, and then overriding//   public void onRequestPermissionsResult(int requestCode, String[] permissions,//                                          int[] grantResults)// to handle the case where the user grants the permission. See the documentation// for ActivityCompat#requestPermissions for more details.return 1;
}

1.需要用户手动赋予的权限( Dangerous Permissions)

所属权限组 权限
日历 READ_CALENDAR
日历 WRITE_CALENDAR
相机 CAMERA
联系人 READ_CONTACTS
联系人 WRITE_CONTACTS
联系人 GET_ACCOUNTS
位置 ACCESS_FINE_LOCATION
位置 ACCESS_COARSE_LOCATION
麦克风 RECORD_AUDIO
电话 READ_PHONE_STATE
电话 CALL_PHONE
电话 READ_CALL_LOG
电话 WRITE_CALL_LOG
电话 ADD_VOICEMAIL
电话 USE_SIP
电话 PROCESS_OUTGOING_CALLS
传感器 BODY_SENSORS
短信 SEND_SMS
短信 RECEIVE_SMS
短信 READ_SMS
短信 RECEIVE_WAP_PUSH
短信 RECEIVE_MMS
存储 READ_EXTERNAL_STORAGE
存储 WRITE_EXTERNAL_STORAGE

还有指纹识别权限:

<uses-permission android:name="android.permission.USE_FINGERPRINT" />
注意:如果应用程序请求在AndroidManifest中列出的危险权限,并且应用程序已经在同一权限组中具有另一个危险权限,系统会立即授予权限,而不会与用户进行任何交互,。例如,如果一个应用程序先前已经请求并被授予READ_CONTACTS权限,然后它请求WRITE_CONTACTS(同属于联系人一组),系统会立即授予该权限,不会再弹出权限授予询问的对话框。

2.动态申请权限的方法:

首先,需要在AndroidManifest.xml静态申请权限,否则无法动态申请权限,以下代码位置不能放错(在application之外):

<uses-permission android:name="android.permission.上表的权限字符" />

3、java代码申请权限、如下申请相机和文件读写权限

public class MainActivity extends AppCompatActivity {private static final String[] authBaseArr = {//申请类型Manifest.permission.CAMERA,Manifest.permission.WRITE_EXTERNAL_STORAGE};private static final int authBaseRequestCode = 1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initNavi();//申请权限}private boolean hasBasePhoneAuth() {PackageManager pm = getPackageManager();for (String auth : authBaseArr) {if (pm.checkPermission(auth, getPackageName()) != PackageManager.PERMISSION_GRANTED) {return false;}}return true;}private void initNavi() {// 申请权限if (android.os.Build.VERSION.SDK_INT >= 23) {if (!hasBasePhoneAuth()) {this.requestPermissions(authBaseArr, authBaseRequestCode);return;}}}}

3、实现方法2——简便实现

1、添加依赖

implementation 'pub.devrel:easypermissions:1.2.0'

2、申请权限

String[] perms = {Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION};
if (!EasyPermissions.hasPermissions(this, perms)) {EasyPermissions.requestPermissions(this, "App正常运行需要存储权限、媒体权限", 1, perms);
}

4、获取权限原生方法

ActivityCompat.requestPermissions(TongxunluActivity.this, new String[]{Manifest.permission.READ_CONTACTS}, 1);
ActivityCompat.requestPermissions(TongxunluActivity.this, new String[]{Manifest.permission.READ_CONTACTS,Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
protected static String[] permissions = {Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_PHONE_STATE
};
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {requestPermissions(permissions, 1);return;
}

Android 6.0及以上版本动态申请权限,11权限相关推荐

  1. android 6.0蓝牙服务开启,Android应用开发之Android 6.0 蓝牙搜索不到设备原因,MIUI权限申请机制方法...

    本文将带你了解Android应用开发Android 6.0 蓝牙搜索不到设备原因,MIUI权限申请机制方法,希望本文对大家学Android有所帮助. 为提供更高的数据保护   Android6.0版本 ...

  2. android动态申请悬浮框权限,Android动态权限申请工具(包括悬浮窗)

    为了保证APP正常运行,动态权限申请是android比较常用的功能,由于每次都需要做申请.等待返回还有拒绝反馈等操作,比较麻烦,所以集成了一个比较简单的动态权限申请库 集成方法: Step 1. Ad ...

  3. 关于Android读取SD卡存储的动态申请

    关于Android读取SD卡存储的动态申请 介绍 Android的目录结构 数据的主要存储方式 疑惑 原来的代码:MainActivity.java 修改后代码: 介绍 这篇文章主要关于我学习SD卡的 ...

  4. 浏览器登录_谷歌浏览器在Android 7.0及以上版本支持使用指纹进行无密码登录

    此前谷歌已经宣布与 FIDO 联盟达成合作关系并在安卓系统上调用指纹或面部识别等来登录某些支持的网站. 在谷歌浏览器最新发布的帮助文档里谷歌介绍称在部分谷歌服务上允许用户使用安卓设备直接解锁无需密码. ...

  5. android7.0 谷歌拼音,谷歌浏览器在Android 7.0及以上版本支持使用指纹验证进行无密码登录...

    原标题:谷歌浏览器在Android 7.0及以上版本支持使用指纹验证进行无密码登录 来源:蓝点网 此前谷歌已经宣布与 FIDO 联盟达成合作关系并在安卓系统上调用指纹或面部识别等来登录某些支持的网站. ...

  6. Unity Android 之 Unity Android 交互(aar形式)动态申请权限功能实现(权限可人为怎加删减,并含代码工程)

    Unity Android 之 Unity Android 交互(aar形式)动态申请权限功能实现(权限可人为怎加删减,并含代码工程) 目录

  7. 解决Android 7.0及以上版本文件暴露异常exposed beyond app through Intent.getData()的方法

    转载:https://www.icode9.com/content-4-619191.html 我们在APP升级的时候进行下载安装,却在Android 7.0及以上版本会报错 android.os.F ...

  8. Android动态申请多个权限-非第三方框架

    最近在做一个项目,需要Android特殊权限,而且是多个权限申请,我们知道在Android6.0(SDK等级是23)以后有些权限是需要动态申请的,所以也就是申请多个动态权限的问题. 直奔主题,我申请的 ...

  9. android动态申请悬浮框权限,Android创建悬浮窗的完整步骤

    在Android中想要创建悬浮窗分为三步 1.申请权限 2.使用服务启动悬浮窗 3.设置悬浮窗参数并添加进WindowManager 下面话不多说了,来一起看看详细的实现过程 申请权限 首先需要申请悬 ...

最新文章

  1. 2016第51周三产品经理如何更有说服力
  2. Android -- 短信
  3. int linux 原子操作_linux c++编程之多线程:原子操作如何解决线程冲突
  4. 元素上下层叠关系总结
  5. markdownpad2下载安装教程
  6. 蒋涛:重新回归的我,将带领 CSDN 全方位升级,为 AI 转型者打造一站式平台
  7. mysql InnoDB引擎支持hash索引吗
  8. eclipse创建maven web工程,以及maven工程转化为web工程的简单介绍。
  9. 软件工程概论网站系统开发基础及目标概述
  10. Dijkstra算法|单源最短路径|贪心算法
  11. 2021年数学建模国赛C题问题四及模型检验
  12. 支付宝-第三方应用授权
  13. 数据库小型教务系统,成绩管理系统
  14. 5)自适应滤波(二)[RLS算法]
  15. Oracle-高效分页
  16. 手把手学爬虫第六弹——数据可视化
  17. Android 记事本
  18. 10分钟教你用python如何正确把妹
  19. wn_concat()函数学习
  20. JavaScript获取本地城市和天气预报实现

热门文章

  1. 前端学习(1796):前端调试之html/css介绍
  2. “睡服”面试官系列第十一篇之module加载实现(建议收藏学习)
  3. oracle之set运算符和练习
  4. 歌谣对自己的“自勉“
  5. 第五十七期:小型企业将如何从5G中受益
  6. html:(22):认识css样式和css的优势
  7. EC20模组使用MQTT库对接EMQX,基于STM32F407
  8. linux更新命令yum,Linux中升级更新命令yum upgrade和yum update的区别
  9. oracle scn与数据恢复,[Oracle] SCN与数据恢复的关系
  10. JS之连接数组方法concat