Android判斷用戶是否允許了攝像頭權(quán)限實例代碼
如題,既然是判斷用戶是否允許了攝像頭權(quán)限,那么,咱們就忽略是Manifest配置的問題,因為這是開發(fā)者的事。
用戶在使用APP時,如果首次進入用攝像頭的地方,手機會提示是否允許該應(yīng)用使用攝像頭。有些用戶小手一抖、或者壓根就不想開啟攝像頭,咔擦,就給你關(guān)了,那好了。下回再進入該功能,就會出現(xiàn)APP一片黑,或者崩潰的情況。

作為開發(fā)者,正常思路是要提示用戶,攝像頭權(quán)限被你關(guān)了,趕緊去手動開啟,不然,就別想用該功能了!那,咱們該怎么實現(xiàn)這個思路呢?
一、判斷攝像頭權(quán)限
Android API沒提供判斷攝像頭權(quán)限是否被關(guān)閉的方法,但是,我們依然有辦法,直接上代碼:
public static booleanisCameraUseable() {
boolean canUse =true;
Camera mCamera =null;
try{
mCamera = Camera.open();
// setParameters 是針對魅族MX5。MX5通過Camera.open()拿到的Camera對象不為null
Camera.Parameters mParameters = mCamera.getParameters();
mCamera.setParameters(mParameters);
}catch(Exception e) {
canUse =false;
}
if(mCamera !=null) {
mCamera.release();
}
return canUse;
}
上面方法,放心copy到你的代碼里,在使用攝像頭之前,調(diào)用一下,返回ture說明攝像頭權(quán)限是開啟的。反之,攝像頭權(quán)限被用戶關(guān)掉了。
附注:
1、可以看出代碼實現(xiàn)思路是通過調(diào)用Camera.open(),然后根據(jù)是否出現(xiàn)異常來判斷權(quán)限狀態(tài)。感興趣的同學(xué)可以看看Android SDK里的android.hardware.Camera這個類,在第490行左右的代碼,google就是這么干的。
Camera(intcameraId) {
interr = cameraInitNormal(cameraId);
if(checkInitErrors(err)) {
switch(err) {
case EACCESS:
throw newRuntimeException("Fail to connect to camera service");
case ENODEV:
throw newRuntimeException("Camera initialization failed");
default:
// Should never hit this.
throw newRuntimeException("Unknown camera error");
}
}
}
2、由于魅族MX5的ROM改了很多東西,google大哥的方法不能完全直接用,于是又加了上面有注釋處的代碼,這里不做過多解釋。
二、給提示
如果攝像頭權(quán)限被用戶關(guān)掉了,處理思路是:彈出個對話框,提示用戶去系統(tǒng)設(shè)置中,找到攝像頭管理權(quán)限界面,手動打開攝像頭權(quán)限。

三、跳轉(zhuǎn)設(shè)置界面手動開啟權(quán)限
跳轉(zhuǎn)設(shè)置界面的代碼如下:
Intent intent =new Intent(Settings.ACTION_SETTINGS); context.startActivity(intent);
附注:有的人會問,為啥不直接跳到攝像頭權(quán)限管理界面去呢,換個action不就行了?是的,這種思路沒錯,但是不同廠家手機打開攝像頭權(quán)限管理界面的action是不一樣的,差別太大,本人試過,整不動。。。感興趣的同學(xué)可以試試哦,驗證一下
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android實現(xiàn)手機監(jiān)控攝像頭
- Android調(diào)用手機攝像頭的方法
- android開發(fā)之調(diào)用手機的攝像頭使用MediaRecorder錄像并播放
- Android開發(fā)教程之調(diào)用攝像頭功能的方法詳解
- Android實現(xiàn)調(diào)用攝像頭進行拍照功能
- Android中判斷是否有前置攝像頭、后置攝像頭的方法
- Android實現(xiàn)調(diào)用攝像頭拍照與視頻功能
- Android調(diào)用前后攝像頭同時工作實例代碼
- Android使用MediaCodec將攝像頭采集的視頻編碼為h264
- Android實現(xiàn)調(diào)用手機攝像頭錄像限制錄像時長
相關(guān)文章
分別用ToolBar和自定義導(dǎo)航欄實現(xiàn)沉浸式狀態(tài)欄
本文主要介紹了分別用ToolBar和自定義導(dǎo)航欄實現(xiàn)沉浸式狀態(tài)欄的方法步驟,具有一定的參考價值,下面跟著小編一起來看下吧2017-01-01
Android操作存放在assets文件夾下SQLite數(shù)據(jù)庫的方法
這篇文章主要介紹了Android操作存放在assets文件夾下SQLite數(shù)據(jù)庫的方法,實例分析了Android操作SQLite數(shù)據(jù)庫的相關(guān)技巧,需要的朋友可以參考下2015-06-06
android Launcher3設(shè)置默認桌面應(yīng)用
這篇文章主要為大家詳細介紹了android Launcher3設(shè)置默認桌面應(yīng)用,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07
Android下拉刷新完全解析,教你如何一分鐘實現(xiàn)下拉刷新功能(附源碼)
以下是我自己花功夫編寫了一種非常簡單的下拉刷新實現(xiàn)方案,現(xiàn)在拿出來和大家分享一下。相信在閱讀完本篇文章之后,大家都可以在自己的項目中一分鐘引入下拉刷新功能2013-07-07

