華為手機的後置攝像頭想要實現掃碼功能,必須要開啟後置攝像頭的預覽畫面也就是拍攝畫面,而後置攝像頭的使用也需要開啟相應的許可權才行,比如手機相機的敏感型別許可權ohos.permission.CAMERA。
下面,我們一起在自己的APP專案中來實現相機許可權-ohos.permission.CAMERA的獲取和開啟。
一.開啟專案中的配置檔案config.json,透過“reqPermissions”欄位宣告相機相關的許可權。
二.在MainAbilitySlice類中,使用requestPermissionFromUser來動態申請相機的許可權。
public class MainAbilitySlice extends AbilitySlice {
public static final int MY_PERMISSIONS_REQUEST_CAMERA = 1039;
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main);
requestCameraPermission();
}
//1.獲取相機許可權
public void requestCameraPermission(){
if (verifySelfPermission("ohos.permission.CAMERA") != IBundleManager.PERMISSION_GRANTED) {
// 應用未被授予許可權
if (canRequestPermission("ohos.permission.CAMERA")) {
// 是否可以申請彈框授權(首次申請或者使用者未選擇禁止且不再提示)
requestPermissionsFromUser(
new String[] { "ohos.permission.CAMERA" } , MY_PERMISSIONS_REQUEST_CAMERA);
} else {
// 顯示應用需要許可權的理由,提示使用者進入設定授權
new ToastDialog(getContext()).setText("請進入手機系統【設定】中,重新開啟應用的相機許可權").show();
}
} else {
// 許可權已成功被授予
new ToastDialog(getContext()).setText("已授權,可使用相機的拍攝功能").show();
//相機預覽介面
// addQrLayout();
}
}
}
三.在MainAbility中,透過onRequestPermissionsFromUserResult回撥函式來接收授予相機許可權的結果。
public class MainAbility extends Ability {
private static final int PERMISSION_REQUEST_CODE = MainAbilitySlice.MY_PERMISSIONS_REQUEST_CAMERA;
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setMainRoute(MainAbilitySlice.class.getName());
}
//呼叫requestPermissionsFromUser後的許可權申請應答
@Override
public void onRequestPermissionsFromUserResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode){
case PERMISSION_REQUEST_CODE: {
if (grantResults.length > 0 && grantResults[0] == IBundleManager.PERMISSION_GRANTED){
new ToastDialog(getContext()).setText("此應用已授權,可進行相機的拍攝").show();
}else{
new ToastDialog(getContext()).setText("許可權被拒絕").show();
}
return;
}
}
}
}
四.進行專案的真機測試,檢視專案的APP是否有相關許可權內容的提示,如果有相關提示框出現則表示手機的攝像頭使用許可權可以進行開通。
如果APP在開啟之後,出現上圖所示的提示框,我們選擇並點選“僅使用期間允許”按鈕,即可真正開通手機相機功能的許可權。
結語:
手機實現掃碼的第一步需要開通相機功能相關的許可權,比如ohos.permission.CAMERA許可權。而後置攝像頭之所以能正常進行畫面的拍攝,需要在APP初次安裝時去啟動並獲取相機功能給予的許可權,保證在後面進行拍攝時其畫面不出現“黑屏”。