Android6.0动态获取摄像头权限(举一反三)
生活随笔
收集整理的這篇文章主要介紹了
Android6.0动态获取摄像头权限(举一反三)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
6.0系統(tǒng)可以動(dòng)態(tài)的獲取系統(tǒng)的權(quán)限API>22
例如攝像頭
舉一反三寫一個(gè)動(dòng)態(tài)獲取攝像頭的方法,其他的權(quán)限也可以稍微修改使用。
在調(diào)用攝像頭的地方進(jìn)行判斷,系統(tǒng)的版本
Build.VERSION.SDK_INT>22如果系統(tǒng)6.0或以上,就判斷有沒(méi)有權(quán)限:
ContextCompat.checkSelfPermission(MainActivity.this,android.Manifest.permission.CAMERA)!= PackageManager.PERMISSION_GRANTEDPackageManager有兩個(gè)屬性PERMISSION_GRANTED,PERMISSION_DENIED;
GRANTED是已經(jīng)獲取到權(quán)限,
DENIED是沒(méi)有獲取到權(quán)限;
如果有權(quán)限了想干嘛干嘛,如果沒(méi)有,就去獲取權(quán)限:
ActivityCompat.requestPermissions(MainActivity.this,new String[]{android.Manifest.permission.CAMERA},CAMERA_OK);然后獲取權(quán)限就結(jié)束了,然后干嘛呢?獲取權(quán)限也有個(gè)回調(diào):onRequestPermissionsResult
@Overridepublic void onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResults) {switch (requestCode){case CAMERA_OK:if (grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){//這里已經(jīng)獲取到了攝像頭的權(quán)限,想干嘛干嘛了可以}else {//這里是拒絕給APP攝像頭權(quán)限,給個(gè)提示什么的說(shuō)明一下都可以。Toast.makeText(MainActivity.this,"請(qǐng)手動(dòng)打開(kāi)相機(jī)權(quán)限",Toast.LENGTH_SHORT).show();}break;default:break;}}貼一下獲取權(quán)限的代碼:
if (Build.VERSION.SDK_INT>22){if (ContextCompat.checkSelfPermission(MainActivity.this,android.Manifest.permission.CAMERA)!= PackageManager.PERMISSION_GRANTED){//先判斷有沒(méi)有權(quán)限 ,沒(méi)有就在這里進(jìn)行權(quán)限的申請(qǐng)ActivityCompat.requestPermissions(MainActivity.this,new String[]{android.Manifest.permission.CAMERA},CAMERA_OK);}else {//說(shuō)明已經(jīng)獲取到攝像頭權(quán)限了 想干嘛干嘛 }}else { //這個(gè)說(shuō)明系統(tǒng)版本在6.0之下,不需要?jiǎng)討B(tài)獲取權(quán)限。}舉一反三,可以把其他的動(dòng)態(tài)申請(qǐng)權(quán)限的替換來(lái)。別忘了清單文件里面注冊(cè)上權(quán)限。
總結(jié)
以上是生活随笔為你收集整理的Android6.0动态获取摄像头权限(举一反三)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: dxp中Cap,Cap2,Cap Pol
- 下一篇: 计算机视觉数据增强方法汇总