android 动态摄像头权限,Android判断用户是否允许了摄像头权限实例代码
如題,既然是判斷用戶是否允許了攝像頭權限,那么,咱們就忽略是Manifest配置的問題,因為這是開發者的事。
用戶在使用APP時,如果首次進入用攝像頭的地方,手機會提示是否允許該應用使用攝像頭。有些用戶小手一抖、或者壓根就不想開啟攝像頭,咔擦,就給你關了,那好了。下回再進入該功能,就會出現APP一片黑,或者崩潰的情況。
作為開發者,正常思路是要提示用戶,攝像頭權限被你關了,趕緊去手動開啟,不然,就別想用該功能了!那,咱們該怎么實現這個思路呢?
一、判斷攝像頭權限
Android API沒提供判斷攝像頭權限是否被關閉的方法,但是,我們依然有辦法,直接上代碼:
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到你的代碼里,在使用攝像頭之前,調用一下,返回ture說明攝像頭權限是開啟的。反之,攝像頭權限被用戶關掉了。
附注:
1、可以看出代碼實現思路是通過調用Camera.open(),然后根據是否出現異常來判斷權限狀態。感興趣的同學可以看看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大哥的方法不能完全直接用,于是又加了上面有注釋處的代碼,這里不做過多解釋。
二、給提示
如果攝像頭權限被用戶關掉了,處理思路是:彈出個對話框,提示用戶去系統設置中,找到攝像頭管理權限界面,手動打開攝像頭權限。
三、跳轉設置界面手動開啟權限
跳轉設置界面的代碼如下:
Intent intent =new Intent(Settings.ACTION_SETTINGS);
context.startActivity(intent);
附注:有的人會問,為啥不直接跳到攝像頭權限管理界面去呢,換個action不就行了?是的,這種思路沒錯,但是不同廠家手機打開攝像頭權限管理界面的action是不一樣的,差別太大,本人試過,整不動。。。感興趣的同學可以試試哦,驗證一下
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
總結
以上是生活随笔為你收集整理的android 动态摄像头权限,Android判断用户是否允许了摄像头权限实例代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人力资源行业拓客的10个经典方法
- 下一篇: 用计算机pol计算方位角,如何通过编程代