​ 参考资料

【Harmony OS】【ARK UI】ETS 上下文基本操作

【Harmony OS】【ARK UI】ets使用startAbility或startAbilityForResult方式调起Ability

Image

代码运行

权限申请

申请文件读取权限,在config.json写如下代码

 "reqPermissions": [
{
"name": "ohos.permission.READ_USER_STORAGE"
},
{
"name": "ohos.permission.WRITE_USER_STORAGE"
}
],

在ets文件动态申请读写权限

 requestMyPermissionsFromUser(){
var context = featureAbility.getContext();
context.requestPermissionsFromUser(
[
"ohos.permission.READ_USER_STORAGE",
"ohos.permission.WRITE_USER_STORAGE"
],
1,(err, data)=>{
console.info("====>requestdata====>" + JSON.stringify(data));
console.info("====>requesterrcode====>" + JSON.stringify(err.code));
}
)
}

跳转相册

在Ets文件写一个跳转按钮跳转到相册,选择相片,返回data的 decodedPath路径就是dataability显示的路径,跳转代码如下

startAlbumAbility(){
var str = {
"want": {
"deviceId": "",
"bundleName": "",
"abilityName": "",
"uri": "",
"action": "android.intent.action.GET_CONTENT",//todo 跳转相册的action
"type":"image/*" //todo 文件类型
},
};
//todo 开始跳转到相册界面
featureAbility.startAbilityForResult(str, (error, data) => {
if (error) {
console.error('Operation failed. Cause: ' + error);
return;
}
if(data.resultCode==-1){//todo 返回到该界面并且得到了结果
console.info('Operation succeeded: '+JSON.stringify(data) );
this.IsLocalFlag=false//todo 设置不是本地路径
this.src="dataability://"+data.want.uri.decodedPath//todo dataability 显示方式
}else{//todo 返回到该界面没有选择相片
console.info('Operation fail: ' );
} });
}

界面显示

定义一个boolean字段判断是否是本地字段,如果是显示本地图片,如果不是显示从相册中选择的图片,

Image的dataability的使用 支持dataability://路径前缀的字符串,用于访问通过data ability提供的图片路径。

 Image(this.IsLocalFlag?$r('app.media.icon'):this.src).width(300).height(300)

全部代码

import featureAbility from '@ohos.ability.featureAbility'
@Entry
@Component
struct Index {
@State IsLocalFlag:boolean=true;
@State src: string = ""
//todo 动态申请文档读写权限
requestMyPermissionsFromUser(){
var context = featureAbility.getContext();
context.requestPermissionsFromUser(
[
"ohos.permission.READ_USER_STORAGE",
"ohos.permission.WRITE_USER_STORAGE"
],
1,(err, data)=>{
console.info("====>requestdata====>" + JSON.stringify(data));
console.info("====>requesterrcode====>" + JSON.stringify(err.code));
}
)
} startAlbumAbility(){
var str = {
"want": {
"deviceId": "",
"bundleName": "",
"abilityName": "",
"uri": "",
"action": "android.intent.action.GET_CONTENT",//todo 跳转相册的action
"type":"image/*" //todo 文件类型
},
};
//todo 开始跳转到相册界面
featureAbility.startAbilityForResult(str, (error, data) => {
if (error) {
console.error('Operation failed. Cause: ' + error);
return;
}
if(data.resultCode==-1){//todo 返回到该界面并且得到了结果
console.info('Operation succeeded: '+JSON.stringify(data) );
this.IsLocalFlag=false//todo 设置不是本地路径
this.src="dataability://"+data.want.uri.decodedPath
}else{//todo 返回到该界面没有选择相片
console.info('Operation fail: ' );
} }); } build() {
Row() {
Column() {
Text("申请权限")
.fontSize(50)
.width(100+"%")
.height("100")
.textAlign(TextAlign.Center)
.fontWeight(FontWeight.Bold)
.onClick(this.requestMyPermissionsFromUser.bind(this))
Text("打开相册")
.fontSize(50)
.width(100+"%")
.height("100")
.textAlign(TextAlign.Center)
.fontWeight(FontWeight.Bold)
.onClick(this.startAlbumAbility.bind(this))
.backgroundColor("#ED6262")
Image(this.IsLocalFlag?$r('app.media.icon'):this.src).width(300).height(300)
}
.width('100%')
}
.height('100%')
}
}

运行效果

欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh

最新文章

  1. 让超出父视图范围的子视图响应事件,在UIView范围外响应点击
  2. pandas处理数据
  3. 荣品RP4412开发板烧写Ubuntu系统应注意SD卡内存大些
  4. [JSP]用户注册
  5. Codeforces Round #359(div 2)
  6. [USACO2005][POJ2226]Muddy Fields(二分图最小点覆盖)
  7. Swift实战-豆瓣电台(七)显示动画
  8. java_annotation_01
  9. 虚拟机配置Openstack常见问题汇总
  10. python语法_模块_time_datetime_random
  11. C语言数据类型的转换(隐式转换)
  12. 单页应用 WebApp SPA 骨架 框架 路由 页面切换 转场
  13. Scrapy学习篇(三)之创建项目和Scrapy的安装
  14. mysql-1045(28000)错误
  15. MySQL 两个数据库表中合并数据
  16. APScheduler API -- apscheduler.schedulers.base
  17. python使用md5处理下载图片
  18. 用 Open Live Writer 来写 cnblog.com 博客
  19. Sharepoint 2010 TimerJob重复
  20. [POJ2954&POJ1265]皮克定理的应用两例

热门文章

  1. Dcoker镜像管理与容器应用
  2. Javaer 面试必背系列!超高频八股之三色标记法
  3. 【Spring】AOP实现原理(一):AOP基础知识
  4. 剖析 SPI 在 Spring 中的应用
  5. [WUSTCTF2020]朴实无华-1
  6. ABAP CDS - DEFINE VIEW, view_annot
  7. UiPath参数介绍和使用
  8. 如何通过WinDbg获取方法参数值
  9. 【python量化】将Transformer模型用于股票价格预测
  10. 避坑手册 | JAVA编码中容易踩坑的十大陷阱