OpenHarmony社交分享类APP开发实战

embedded/2024/10/22 14:28:03/

介绍

本示例是一个社交分享类APP,搭建了不同的页面向用户提供获取社交信息等能力。为了减少频繁权限弹窗对用户的干扰,同时提供更小的授权范围,使用了安全控件做临时授权场景。当用户实际点击了某种类型的安全控件时,会由系统弹出相关通知弹窗,并对应用进行相应的临时授权。

效果预览

使用说明:

  1. 启动应用进入广告动画界面,动画结束后进入应用,整个应用分为三个部分"主页"、“发现”、“我的”,可以通过底部导航进行页面间的切换。
  2. "主页"可以查看各个用户发布的动态,点击任一图文可以进入动态详情界面。
  3. “动态详情页"主要包括上下两部分,上部分主要展示用户发布的动态,可以包括文字、图片、视频,长按图片或视频会浮出"保存"按钮,点击后会弹出授权通知弹窗,点击"知道了”,可以通过安全控件中的保存控件将图片或者视频保存到图库当中。
  4. "动态详情页"下部分展示用户的评论情况,点击底部"评论"按钮,在文本框中输入评论,长按文本框出现"复制 粘贴"按钮,点击"复制"按钮可以将选定信息写入剪贴板,点击"粘贴"按钮,可以通过安全控件中的粘贴控件从剪贴板中读取信息。
  5. “发现"页面,点击"同城"按钮可以通过安全控件中的位置控件获取当前定位,点击后会弹出授权通知弹窗,点击"知道了”,会跳转到"同城榜"界面并显示当前定位城市。点击"发现"页面中的"全部"按钮可以跳转到"热搜榜"界面。
  6. “热搜榜”、"我的"界面当前是静态页面。

工程目录

features/authorizedControl/src/main/ets             // 安全控件类HAR共享包
|---/authorizedControl    
|   |---LocationControl.ets                         // 位置控件            
|   |---PasteControl.ets                            // 粘贴控件
|   |---SaveControl.ets                             // 保存控件
|---/commonComponent
|   |---TrendsItem.ets                              // 单一动态组件         
|---/model
|   |---BaseMsg.ets                                 // 数据类型  
|   |---BasicDataSource.ets                         // 懒加载基本数据资源 
|   |---DataFactory.ets                             // 构造数据方法 
|   |---MockData.ets                                // 模拟数据  
|   |---TrendsDataSource.ets                        // 主页动态数据资源类  
|---/utils
|   |---Constants.ets                               // 封装常量
|   |---Logger.ets                                  // 封装日志类
|---/view
|   |---CommentDetailView.ets                       // 发现详情模块
|   |---MainView.ets                                // 主页模块
|   |---MineView.ets                                // 个人显示模块
|   |---SameCityListView.ets                        // 同城显示模块
|   |---SquareView.ets                              // 发现模块
|   |---TrendsDetailView.ets                        // 动态详情模块
products/phone/entry/src/main/ets
|---/entryability
|   |---EntryAbility.ts                             // Ability模块
|---/pages                                                               
|   |---AdvertisingPage.ets                         // 广告页面
|   |---CommentDetailPage.ets                       // 动态详情页面
|   |---HomePage.ets                                // 主页
|   |---SameCityListPage.ets                        // 同城页面
|---/utils
|   |---Constants.ets                               // 常量
|   |---Logger.ets                                  // 封装日志类
|   |---ResourceUtils.ets                           // 资源转换函数

具体实现

安全控件的使用:
  • 本示例安全控件的使用主要从图片和视频的保存、文本的复制和粘贴以及位置信息的获取三个模块体现:
    • 图片和视频的保存

      • 使用SaveButton控件保存图片或者视频到图库,首先点击保存按钮调用photoAccessHelper.getPhotoAccessHelper()得到媒体库图片管理器helper,
        然后通过helper.createAsset()方法得到媒体库图片的uri, resourceManager.getMediaContent()可以得到存放在Resources/base/media文件下的banner.png图片内容,
        使用fs.open()和fs.write()方法将图片内容通过得到的uri写到媒体库中,最后通过fs.close()方法关闭文件
      • 源码链接:SaveControl.ets
      • 接口参考:@ohos.file.photoAccessHelper,@ohos.file.fs
    • 文本的复制和粘贴

      • 使用PasteButton控件获取剪贴板信息,在其点击回调onclick事件中调用systemPasteboard.setData()方法将文本复制到剪贴板中,然后通过systemPasteboard.getData()方法得到剪贴板内容
      • 源码链接:PasteButton.ets
      • 接口参考:@ohos.pasteboard
    • 位置信息的获取

      • 使用LocationButton控件获取定位信息,在其点击回调onclick事件中调用geoLocationManager.getCurrentLocation()方法得到当前定位信息经纬度。
      • 源码链接:LocationButton.ets
      • 接口参考:@ohos.geoLocationManager

相关权限

不涉及。

依赖

不涉及。

约束与限制

  1. 本示例仅支持标准系统上运行,支持设备:GPS定位功能仅支持部分机型。
  2. 本示例仅支持API10版本SDK,SDK版本号(API Version 10 Release), 镜像版本号(4.0 Release)。
  3. 本示例需要使用DevEco Studio 版本号(4.0 Release)及以上版本才可编译运行。

下载

如需单独下载本工程,执行如下命令:

git init
git config core.sparsecheckout true
echo code/Solutions/IM/GrapeSquare/ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.
鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向


http://www.ppmy.cn/embedded/5395.html

相关文章

接口测试——postman

一.下载与安装 https://www.getPostman.com/ 界面导航说明 二.get请求 第一个get请求 批量执行接口请求: 1. 右击run collection 2. 会出现runner标签页 携带参数的GET请求 所谓的查询参数,其实就是URL地址中问号(?)后面的部分…

Git学习笔记(二)Git安装及基础命令

前面的文章中,我们已经对Git的一些基础知识进行了简单的介绍,包括它的作用,Git组件,文件状态以及一些简单的命令介绍等等。那么这一章主要介绍如何下载安装配置Git,以及Git的一些常用命令和实操截图。 Git下载与安装 …

快速删除node_modules依赖包的命令rimraf

1、安装rimraf npm install -g rimraf 2、使用命令删除node_modules rimraf node_modules *** window系统,使用命令很快就删除node_modules ***

用队列实现栈

文章目录 题目介绍思路分析代码实现C语言版本C版本 我们一起来看这样一道题目 题目介绍 链接: link 栈和队列呢我们之前的文章都有讲解过,当时栈我们是用顺序表(数组)来实现的,队列采用单链表来实现的。 而现在这道题呢要让我…

如何用ServBay快速构建下一代GraphQL应用

在本指南中,我们将深入探讨如何利用ServBay一站式环境和Docker,构建可扩展的GraphQL微服务。我们将从微服务架构和GraphQL的基础知识入手,逐步深入到如何利用现代工具和技术构建、容器化并部署我们的微服务。 理解微服务架构 微服务架构是一…

设计模式(分类)

目录 设计模式(分类) 设计模式(六大原则) 创建型 工厂方法 抽象工厂模式 单例模式 建造者模式 原型模式 结构型 适配器模式 设计模式是软件工程中一种经过验证的、用于解决特定设计问题的…

大厂面试精华面试刷题

1.自定义unshift实现相同效果 2.数组去重 用vs2019来写这种练习题可以更直观的查看代码执行的效果,最后的代码是控制控制台执行完毕后不自动关闭 use strict;let arr [1, 1, 2, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10] //1.//查重最简单的方法for循环结合splice从数组中…

郑州交通拥堵预测与优化系统

一、项目目标 开发一个郑州交通拥堵预测与优化系统,包括数据收集与分析、模型构建、用户交通优化以及系统优化等功能。 二、开发流程 数据收集与分析 数据收集:收集郑州的交通数据,包括实时车速、路况信息、道路长度、起点终点坐标等。 数据…