经过了一些研究发现V9版本的model-driven app已经有了很大的提升,可以实现很多可能,比如本篇要分享的在app端调用相机拍照的功能。
我在Ribbon上加了个按钮,按钮上绑定了名叫CapturePhoto的Event
看下CapturePhoto中的代码,
function CapturePhoto(clientContext) {
debugger;
var client = Xrm.Utility.getGlobalContext().client;
if (client.getClient() == 'Mobile') {
var imageOptions = {
allowEdit: true,
height: 250,
width: 400,
preferFrontCamera: true,
quality: 100
};
Xrm.Device.captureImage(imageOptions).then(
function success(result) {
// perform operations on the captured image
var data =
{
"entityimage": result.fileContent
}
var alertStrings = { confirmButtonLabel: 'Yes', text: 'fileName:'+result.fileName+'fileSize:'+result.fileSize };
var alertOptions = { height: 120, width: 260 };
Xrm.Navigation.openAlertDialog(alertStrings, alertOptions);
// Xrm.WebApi.updateRecord("ubr_lost", clientContext.data.entity.getId().replace('{', '').replace('}', ''), data).then(
// function success(result) {
// var alertStrings = { confirmButtonLabel: 'Yes', text: 'Lost Image updated.' };
// var alertOptions = { height: 120, width: 260 };
// Xrm.Navigation.openAlertDialog(alertStrings, alertOptions).then(
// function success() {
// // perform operations on alert dialog close
// },
// function (error) {
// console.log(error.message);
// // handle error conditions
// }
// );
// },
// function (error) {
// Xrm.Utility.alertDialog("Error while updating Account Image : " + error.message, null);
// // handle error conditions
// }
// );
},
function (error) {
console.log(error.message);
// handle error conditions
}
);
}
}
这里仅作为演示,我把获取到的照片的基本信息弹框出来了,当然获取到照片后可以实现很多功能场景,比如我代码中屏蔽掉的那段把照片作为记录的entityimage更新到记录中,也可以调用OCR的服务接口来进行照片识别,比如名片、证件等的识别。