HarmonyOS 鸿蒙Next H5访问相册的demo示例
HarmonyOS 鸿蒙Next H5访问相册的demo示例
H5访问相册的demo示例
2 回复
此demo用于当web组件加载一个h5页面时,用与h5页面用input标签调用手机相册以及系统相机。 注入JavaScript对象到window对象中,并在window对象中调用该对象的方法。注册后,须调用refresh接口生效。注册对象的名称,与window中调用的对象名一致。注册后window对象可以通过此名字访问应用侧JavaScript对象。
import business_error from '[@ohos](/user/ohos).base';
import picker from '[@ohos](/user/ohos).file.picker';
import { BusinessError } from '[@ohos](/user/ohos).base';
import common from '[@ohos](/user/ohos).app.ability.common';
import web_webview from '[@ohos](/user/ohos).web.webview';
class pickImage {
constructor() {
}
testPickImage(): string {
try {
let PhotoSelectOptions = new picker.PhotoSelectOptions();
PhotoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;
PhotoSelectOptions.maxSelectNumber = 5;
let photoPicker = new picker.PhotoViewPicker();
photoPicker.select(PhotoSelectOptions).then((PhotoSelectResult: picker.PhotoSelectResult) => {
console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult));
}).catch((err: BusinessError) => {
console.error('PhotoViewPicker.select failed with err: ' + JSON.stringify(err));
});
} catch (error) {
let err: BusinessError = error as BusinessError;
console.error('PhotoViewPicker failed with err: ' + JSON.stringify(err));
}
return '121';
}
}
class cameraImage {
constructor() {
}
testCameraImage(): string {
const context = getContext(this) as common.UIAbilityContext
context.startAbilityForResult({
action:"ohos.want.action.imageCapture",
parameters:{
callBundleName:"com.hm.imageshow"
}
},(err,data) => {
console.info("imageCapture:" + `${JSON.stringify(data)}`)
})
return '1221';
}
}
[@Entry](/user/Entry)
[@Component](/user/Component)
struct photo {
controller: web_webview.WebviewController = new web_webview.WebviewController();
[@State](/user/State) webPickImage: pickImage = new pickImage();
[@State](/user/State) webCameraImage: cameraImage = new cameraImage();
aboutToAppear(){
// 配置Web开启调试模式
web_webview.WebviewController.setWebDebuggingAccess(true);
}
build() {
Column() {
Button('refresh')
.onClick(() => {
try {
this.controller.refresh();
} catch (error) {
let e: business_error.BusinessError = error as business_error.BusinessError;
console.error(`ErrorCode: ${e.code}, Message: ${e.message}`);
}
})
Button('Register JavaScript To Window')
.onClick(() => {
try {
this.controller.registerJavaScriptProxy(this.webPickImage, "pickImageName", ["testPickImage"]);
this.controller.registerJavaScriptProxy(this.webCameraImage, "cameraImageName", ["testCameraImage"]);
} catch (error) {
let e: business_error.BusinessError = error as business_error.BusinessError;
console.error(`ErrorCode: ${e.code}, Message: ${e.message}`);
}
})
Web({ src: $rawfile('Test1128.html'), controller: this.controller })
.javaScriptAccess(true)
}
}
}
html:
<!DOCTYPE html>
<html>
<body>
<button type="button" onclick="pickImage()">唤起图库</button>
<button type="button" onclick="cameraImage()">唤起照相机</button>
<p id="demo"></p>
<script>
function pickImage() {
let str=pickImageName.testPickImage();
}
function cameraImage(){
let str2=cameraImageName.testCameraImage();
}
</script>
</body>
</html>
更多关于HarmonyOS 鸿蒙Next H5访问相册的demo示例的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
以下是一个HarmonyOS鸿蒙Next H5访问相册的demo示例代码:
index.html
<!DOCTYPE html>
<html>
<head>
<title>访问相册示例</title>
</head>
<body>
<button id="selectPhoto">选择照片</button>
<img id="photoDisplay" src="" alt="照片预览" style="display:none;">
<script src="app.js"></script>
</body>
</html>
app.js
document.getElementById('selectPhoto').addEventListener('click', function() {
plus.io.resolveLocalFileSystemURL('_documents/', function(entry) {
entry.getDirectory('DCIM', {create: true}, function(dcimDir) {
dcimDir.createReader().readEntries(function(entries) {
for (var i = 0; i < entries.length; i++) {
if (entries[i].isFile && entries[i].name.endsWith('.jpg')) {
var imgUrl = entries[i].toLocalURL();
document.getElementById('photoDisplay').src = imgUrl;
document.getElementById('photoDisplay').style.display = 'block';
break; // 仅显示第一张图片作为示例
}
}
});
});
});
});
manifest.json(需要配置权限)
{
"module": {
"requests": [
"ohos.permission.READ_MEDIA"
]
}
}
上述代码实现了在HarmonyOS鸿蒙Next H5应用中通过点击按钮访问相册并显示第一张图片的功能。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html