基于跨设备迁移和分布式文件能力的DistributedMail解析

基于跨设备迁移和分布式文件能力的DistributedMail解析

作者:HairtailofDai 2021-08-13 13:53:23

开发

前端

分布式 Distributed Server分布式版本主要服务于在各地设有分部的政府机构、大型集团公司以及百万用户级别的大型电子邮件运营商。

[[417428]]

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.IDC.NET

一、DistributedMail演示效果

(一)项目效果展示

(二)提示在多设备调试过程中的注意

想要多设备调试务必在Tools下面选择Super device。如果选择单个设备并进行分布式操作就会出现:

选择完多设备后,务必分别在两个设备部署应用。如果只部署了一台也是不行的。

(三)解决页面显示的问题

需要注意的是,因为原文件布局的原因,迁移到其他设备的页面布局出现了问题,在远程模拟器上呈现的就是迁移到其他设备的页面的确定按钮看不见。这最开始属实把我给整懵了。

如下:

百二秦关终属楚!!!!找了半天终于弄明白了并解决。

手机快捷控制栏把按钮遮盖了

1.分析问题:

  • 要么是dialog_layout_device.xml布局出现了问题,把下面的组件挤出去了;
  • 要么是DeviceSelectDialog.class中创建的ListDialog的设置出现了问题;
  • 要么是手机快捷控制栏把按钮遮盖了。

2.调整dialog_layout_device.xml布局,发现此布局为方向布局,按权重分配高度,其中ListContainer的ohos:weight=“1”,故删去此行并把高度设为150vp(总共300vp,迁移到其他设备的Text50vp,最后的水平方向容器)(确定、占位、取消三个组件)共占100vp)其结果如下图:

3.确定是ListDialog弹窗的问题就返回DeviceSelectDialog.class中去分析

(1)分析大致结构(这里就不具现化了,后面会对整个工程进行剖析)

(2)控制变量进行调试,发现把弹窗放在屏幕中间,取消和确定按钮可以出现。

最终确定是手机快捷控制栏把按钮遮盖了,最终解决方案,为了保证ListContainer可以很好的展示出可迁移设备且弹窗看起来更大气一点,dialog_layout_device.xml只把总体方向布局的高度变为ohos:height=“400vp”,把对齐方式改为居中。setAlignment(LayoutAlignment.CENTER);

如果还是想把弹窗弄在下面,且可以显示取消和确定按钮,就把setAlignment(LayoutAlignment.BOTTOM);布局文中下方留出100多的vp给手机快捷控制栏就行。(具体操作把ListContainer的ohos:weight=”1″删去,对整体布局的高度进行具象化,即不按比例按数值)

最终效果:

二、工程目录分析

三、权限申请

很明显的,在此应用部署后,有两个权限弹框弹出。

  • 第一个是访问图片和媒体的权限
  • 第二个是使用多设备协同的的权限

但其实本应用申请了六个权限:

在MainAbility中的onStart()函数中:

<a name=“permission”></a>大家有没有想过这样一个问题:为什么这里permission里就三个权限,其他三个权限呢,为什么这里有三个权限,工程演示的时候却是有两个确定弹框呢。其原因:

敏感权限的申请需要按照动态申请流程向用户申请授权。非敏感权限不涉及用户的敏感数据或危险操作,仅需在config.json中声明,应用安装后即被授权。另外三个是非敏感权限。

应用动态申请权限而应用最开始只请求了两个权限。另外一个修改本地图片和媒体的权限并没有开始申请仅此而已。

  1. //访问图片和媒体 
  2. "ohos.permission.READ_USER_STORAGE"
  3. //允许不同设备间的数据交换。 
  4. "ohos.permission.DISTRIBUTED_DATASYNC" 

对于权限的申请有代码示例工程(Permission),之后会对权限进行更全面的学习并对工程进行更全面的剖析。

获取分布式设备即MailEditSlice中setClickAction方法

四、界面分析(重点layout的梳理)

1.在界面分析的时候,发现layout的xml文件标红,发现代码示例工程为SDKversion2.0所以出现了问题。下面是一个例子其他的不列全<a name=“version”></a>

2.且未用string.json保存字符串<a name=“string”></a>

3.对moudle_mail_edit.xml进行布局分析其他几个Layout组件很少就不赘述了。

五、页面梳理(slice的梳理)

1.打开MailEditSlice,发现不规范的地方,关于final的添加。

2.对其分析(关于页面跨设备迁移看我前一篇文章PageAbility全面解析有详解)

六、邮件正文数据、邮件初始化、邮件数据处理

  • bean/MailDataBean.java,用于表示邮件正文数据
  • MailDataBean.java中对邮件数据进行封装,对Param页面间传递的信息进行处理
  • MailEditSlice页面中,我们把邮件内容初始化即上面slice中fillview部分
  • onSaveData()和onRestoreData()方法来进行传递和恢复

预处理:

七、问题总结

1.(未解决)怎么使得弹窗不被手机快捷栏遮挡,就像官方文档给的图一样。

2.(已解决)本应用申请了六个权限,但MainAbility中requestPermission()只有三个,而且项目演示中,最开始只有两个权限申请弹窗。笔者已解决在文中权限申请部分。

3.(已解决)因为版本原因(代码示例工程为SDKversion2.0所以出现了问题),

4.(已解决)且未用string.json保存字符串

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.IDC.NET

 

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/308246.html<

(0)
运维的头像运维
上一篇2025-05-27 12:09
下一篇 2025-05-27 12:10

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注