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.pswp.cn/news/538360.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538360.shtml
英文地址,請注明出處:http://en.pswp.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(…