Android中已经添加权限,依然提示缺少权限,此时你需要添加动态权限

原文链接:http://blog.csdn.net/android_hdh/article/details/52583557

-------------------------------

最近在开发项目时,项目需要获取系统的WRITE_EXTERNAL_STORAGE权限,然后就在清单文件AndroidManifest中添加了该权限,但是在系统运行后发现并没有创建该有的文件,然后查看了一下日志发现系统提示没有获得权限,之后在网上搜索了下发现Android6.0之后需要动态获取这种权限,然后改了一下果真可以了,下面把动态获取权限的过程讲解一下,以备将来查看和帮助哪些遇到同样问题的人。

下面贴出请求动态获取权限的代码

自己定义的请求Code

[java] view plaincopy
print?
  1. private final static int REQUEST_CODE_ASK_WRITE_EXTERNAL_STORAGE=0x123;  


[java] view plaincopy
print?
  1. if(Build.VERSION.SDK_INT >= 23){//判断当前系统的版本  
  2.             int checkWriteStoragePermission = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);//获取系统是否被授予该种权限  
  3.             if(checkWriteStoragePermission != PackageManager.PERMISSION_GRANTED){//如果没有被授予  
  4.                 ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},REQUEST_CODE_ASK_WRITE_EXTERNAL_STORAGE);  
  5.                 return;//请求获取该种权限  
  6.             }else{  
  7.                 initEvent();//定义好的获取权限后的处理的事件  
  8.             }  
  9.         }else {  
  10.             initEvent();  
  11.         }  

当触发了获取该权限的操作时会弹出一个提示框,会询问你是否允许添加该种权限,具体如下图

然而,我们如何知道用户是点了什么呢?这里我们需要重写一下事件onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResults){}

通过该事件来回调监听用户的操作

[java] view plaincopy
print?
  1. @Override  
  2.    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {  
  3.        switch (requestCode){  
  4.            case REQUEST_CODE_ASK_WRITE_EXTERNAL_STORAGE:  
  5.                if(grantResults[0] == PackageManager.PERMISSION_GRANTED){  
  6.                    initEvent();  
  7.                }else{  
  8.                    finish();  
  9.                }  
  10.                break;  
  11.            default:  
  12.                super.onRequestPermissionsResult(requestCode, permissions, grantResults);  
  13.        }  
  14.    }  
这里grantResults[0] 的结果有两种一种是授权,一种是阻止,当授权时就执行你的相应操作,否则就关闭程序。

好了关于动态获取权限的流程就是这些,如果你觉得有用就顶一个吧,哈哈


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538360.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux php任务计划,linux系统怎么添加计划任务执行php文件

linux系统怎么添加计划任务执行php文件linux系统怎么添加计划任务执行php文件?PHP不支持多线程,有时候处理问题不是那么爽,小编以php文件为例,讲解linux下的计划任务。linux系统添加计划任务执行php文件方法1.打开linux系统命令行界面。在命令行界面中输入如下命令…

windows server 2008 r2 定时关机_电脑怎么定时关机 秒懂的Win10定时关机命令使用方法...

Win10怎么定时关机?今天芝麻科技网教大家3种Win10定时关机方法,包含用命令定时关机、软件以及杀毒工具定时关机等,也适合XP、Win7和Win8等系统,相信对于一些如夜间下载东西或者大文件,挂机等用户有所帮助。方法一&…

Android-循环访问网站App

网优同事的突然需求。 花了1天开发了出来。 App截图 App操作流程 1、赋值要循环访问网站的地址 2、设置每次循环间隔时间和每次访问间隔时间 3、点击按钮开始访问 下载地址:https://download.csdn.net/download/zengmingen/9983519

与专门团队一起持续交付

BCG Digital Ventures的首席工程师Robin Weston 最近在伦敦持续生命周期大会(Continuous Lifecycle London)上发布了一份经验报告,在该报告中称,外部支持团队能够在难以实施变化的组织和封闭的团队中引入持续交付(CD)实践。该团队…

windows版一键绕id工具_Windows免费版一键绕过IOS13.6激活锁工具XgRiNdA,完美重启!...

支持iOS13.6.1系统,支持iPhone、iPad绕过,支持MEID三网、两网GSM机器,只要一键就可以绕过,可以完美关机重启,并且支持iTunes同步、爱思安装软件。新版本:增加屏幕锁/停用绕过解信号功能、新增12.4~13.2.3绕…

php程序员需要学c语言吗,程序员为什么需要学会C语言

一转眼转行做程序员已经快三年了,刚开始觉得这是个技术活,现在仔细想想每天的工作,好像大多数情况都是在复制粘贴。这不禁让我陷入了恐惧之中,重新思考要突破现有的状况。前两年听说iOS开发使用swift语言开发简单,我就…

Could not find artifact

用Maven install 对父工程安装到本地仓库

uart怎么判断帧错误_UART通讯总线工作原理的理解

奥的斯电梯OCSS/LCBII /TCBC/GECB板与电梯轿厢和电梯井道之间的串行通讯采用了UART通讯,将井道和轿厢的输入、输出和开关部件的信号转换成串行通讯信号传输给电梯操作控制系统,大大节省了现场布线,下面就UART通讯总线工作原理的理解予以描述。…

Laravel核心代码学习--用户认证系统的实现细节

用户认证系统的实现细节 上一节我们介绍了Laravel Auth系统的基础知识,说了他的核心组件都有哪些构成,这一节我们会专注Laravel Auth系统的实现细节,主要关注Auth也就是AuthManager是如何装载认证用的看守器(Guard)和用户提供器(UserProvider…

matlab 光谱噪声,环境小卫星高光谱影像条纹噪声去除程序IDL版

前言源代码PRO stripe_remove1ENVI,/Restore_Base_Save_FilesENVI_Batch_initfile DIALOG_PICKFILE(/READ, FILTER *.img)print,fileENVI_OPEN_FILE,file,r_fidfidENVI_FILE_QUERY, fid, dimsdims, nsns, nlnl, nbnbprint,fid,dims,ns,nl,nbfdata fltarr(ns,nl,nb)datafltar…

启动TOMCAT报错 java.util.zip.ZipException: invalid LOC header (bad signature)

报错信息大致如下所示: at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke(Unknown Source)at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:303)at org.apache.catalina.startup.Bootstrap.…

快速乘模板

描述 求 a 乘 b 对 p 取模的值&#xff0c;其中 1≤a,b,p≤10^18。 输入格式 第一行a&#xff0c;第二行b&#xff0c;第三行p。 输出格式 一个整数&#xff0c;表示a*b mod p的值。 样例输入 2 3 9 样例输出 6 #include <bits/stdc.h> using namespace std; const int M…

结构体怎么赋值_c语言学习之基础知识点介绍:结构体的介绍

一、结构体的介绍/* 语法&#xff1a;struct 结构体名{成员列表;};切记切记有分号&#xff01;说明&#xff1a;成员列表就是指你要保存哪些类型的数据。注意&#xff1a;上面的语法只是定义一个新的类型&#xff0c;而这个类型叫做结构体类型。因为类型不能保存数据&#xff0…

php 生成excel空白,phpexcel库在localhost上运行良好,但在服务器中生成空白的excel文件...

这是我的代码,在本地主机上可以很好地使用数据库中的数据生成一个excel文件,但在托管服务器中它会生成一个空白的excel文件&#xff1a;// Starting the PHPExcel library$this->load->library(PHPExcel);//$this->load->library(PHPExcel/IOFactory);$objPHPExcel…

阿里云Maven仓库地址

<默认情况下配置多个mirror的情况下&#xff0c;只有第一个生效&#xff0c;只有当前一个mirror 无法连接的时候&#xff0c;才会去找后一个&#xff1b;而我们想要的效果是&#xff1a;当a.jar在第一个mirror中不存在的时候&#xff0c;maven会去第二个mirror中查询下载&a…

python发短信脚本_python脚本发送短信

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…

国内远程医疗市场快速增长

目前&#xff0c;远程医疗技术已经从最初的电视监护、电话远程诊断发展到利用高速网络进行数字、图像、语音的综合传输&#xff0c;并且实现了实时的语音和高清晰图像的交流&#xff0c;为现代医学的应用提供了更广阔的发展空间。 健康一体机 远程医疗是指通过计算机技术、遥感…

php怎么使得字体滚动,滚动文字+字体特效代码(全集)

收集了几天&#xff0c;终于把滚动文字*字体特效差不多收集完了&#xff0c;这里与大家一同分享&#xff0c;期待您的博客越做越漂亮&#xff01;感谢您的光临&#xff01;1.阴影滚动字循环滚动:欢迎光临弥勒内院看门人博客&#xff0c;看门人欢迎您代码:欢迎光临弥勒内院看门人…

Eclipse集成svn后出现Failed to load JavaHL Library的解决办法

在win10 64位上eclipsex64位 集成svn插件 在使用 Team-share project &#xff0c;选择svn后&#xff0c;报了&#xff1a;Failed to load JavaHL Library错误 解决方法&#xff1a; winodws--perference--svn。设置如下图

python写进程_将数据作为后台进程在Python中写入磁盘

您可以像这样尝试using multiple processes&#xff1a;import multiprocessing as mpdef compute(j):# compute a bunch of datareturn datadef write(data):# write data to diskif __name__ __main__:pool mp.Pool()for j in xrange(200):pool.apply_async(compute, args(…