• Home
Name Date Size #Lines LOC

..--

AppScope/06-May-2025-3532

feature/authorizedControl/06-May-2025-4,7424,495

hvigor/06-May-2025-1919

product/phone/entry/06-May-2025-1,3801,202

screenshots/devices/06-May-2025-

.gitignoreD06-May-2025129 1111

README_zh.mdD06-May-20257.4 KiB11388

build-profile.json5D06-May-20251.3 KiB5554

hvigorfile.tsD06-May-2025864 225

hvigorwD06-May-20252.1 KiB6328

hvigorw.batD06-May-20252.2 KiB8060

oh-package.json5D06-May-2025874 2726

ohosTest.mdD06-May-20251.1 KiB128

README_zh.md

1# 葡萄广场
2
3### 介绍
4
5本示例是一个社交分享类APP,搭建了不同的页面向用户提供获取社交信息等能力。为了减少频繁权限弹窗对用户的干扰,同时提供更小的授权范围,使用了[安全控件](https://gitee.com/openharmony/applications_app_samples/tree/master/code/SystemFeature/Security/AuthorizedButton)做临时授权场景。当用户实际点击了某种类型的安全控件时,会由系统弹出相关通知弹窗,并对应用进行相应的临时授权。
6
7### 效果预览
8
9|                  Home                  |                    Location                    |                            Paste                            |
10|:--------------------------------------:|:----------------------------------------------:|:-----------------------------------------------------------:|
11| ![main](screenshots/devices/Home.jpeg) | ![location](screenshots/devices/Location.jpeg) |          ![paste](screenshots/devices/Paste.jpeg)           |
12|                  Save                  |                        Notication                        |                        SameCrityPage                        |
13| ![save](screenshots/devices/Save.jpeg) | ![notication](screenshots/devices/NotificationPage.jpeg) | ![sameCrityPage](screenshots/devices/SameCrityPage.jpeg) |
14
15使用说明:
16
171. 启动应用进入广告动画界面,动画结束后进入应用,整个应用分为三个部分"主页"、"发现"、"我的",可以通过底部导航进行页面间的切换。
182. "主页"可以查看各个用户发布的动态,点击任一图文可以进入动态详情界面。
193. "动态详情页"主要包括上下两部分,上部分主要展示用户发布的动态,可以包括文字、图片、视频,长按图片或视频会浮出"保存"按钮,点击后会弹出授权通知弹窗,点击"知道了",可以通过安全控件中的保存控件将图片或者视频保存到图库当中。
204. "动态详情页"下部分展示用户的评论情况,点击底部"评论"按钮,在文本框中输入评论,长按文本框出现"复制 粘贴"按钮,点击"复制"按钮可以将选定信息写入剪贴板,点击"粘贴"按钮,可以通过安全控件中的粘贴控件从剪贴板中读取信息。
215. "发现"页面,点击"同城"按钮可以通过安全控件中的位置控件获取当前定位,点击后会弹出授权通知弹窗,点击"知道了",会跳转到"同城榜"界面并显示当前定位城市。点击"发现"页面中的"全部"按钮可以跳转到"热搜榜"界面。
226. "热搜榜"、"我的"界面当前是静态页面。
23
24### 工程目录
25
26```
27features/authorizedControl/src/main/ets             // 安全控件类HAR共享包
28|---/authorizedControl
29|   |---LocationControl.ets                         // 位置控件
30|   |---PasteControl.ets                            // 粘贴控件
31|   |---SaveControl.ets                             // 保存控件
32|---/commonComponent
33|   |---TrendsItem.ets                              // 单一动态组件
34|---/model
35|   |---BaseMsg.ets                                 // 数据类型
36|   |---BasicDataSource.ets                         // 懒加载基本数据资源
37|   |---DataFactory.ets                             // 构造数据方法
38|   |---MockData.ets                                // 模拟数据
39|   |---TrendsDataSource.ets                        // 主页动态数据资源类
40|---/utils
41|   |---Constants.ets                               // 封装常量
42|   |---Logger.ets                                  // 封装日志类
43|---/view
44|   |---CommentDetailView.ets                       // 发现详情模块
45|   |---MainView.ets                                // 主页模块
46|   |---MineView.ets                                // 个人显示模块
47|   |---SameCityListView.ets                        // 同城显示模块
48|   |---SquareView.ets                              // 发现模块
49|   |---TrendsDetailView.ets                        // 动态详情模块
50products/phone/entry/src/main/ets
51|---/entryability
52|   |---EntryAbility.ts                             // Ability模块
53|---/pages
54|   |---AdvertisingPage.ets                         // 广告页面
55|   |---CommentDetailPage.ets                       // 动态详情页面
56|   |---HomePage.ets                                // 主页
57|   |---SameCityListPage.ets                        // 同城页面
58|---/utils
59|   |---Constants.ets                               // 常量
60|   |---Logger.ets                                  // 封装日志类
61|   |---ResourceUtils.ets                           // 资源转换函数
62```
63
64### 具体实现
65#### 安全控件的使用:
66* 本示例安全控件的使用主要从图片和视频的保存、文本的复制和粘贴以及位置信息的获取三个模块体现:
67  * 图片和视频的保存
68
69    * 使用SaveButton控件保存图片或者视频到图库,首先点击保存按钮调用photoAccessHelper.getPhotoAccessHelper()得到媒体库图片管理器helper,
70      然后通过helper.createAsset()方法得到媒体库图片的uri, resourceManager.getMediaContent()可以得到存放在Resources/base/media文件下的banner.png图片内容,
71      使用fs.open()和fs.write()方法将图片内容通过得到的uri写到媒体库中,最后通过fs.close()方法关闭文件
72    * 源码链接:[SaveControl.ets](feature/authorizedControl/src/main/ets/authorizedControl/SaveControl.ets)
73    * 接口参考:[@ohos.file.photoAccessHelper](https://docs.openharmony.cn/pages/v5.0/zh-cn/application-dev/reference/apis-media-library-kit/js-apis-photoAccessHelper.md),[@ohos.file.fs](https://docs.openharmony.cn/pages/v5.0/zh-cn/application-dev/reference/apis-core-file-kit/js-apis-file-fs.md)
74
75  * 文本的复制和粘贴
76
77    * 使用PasteButton控件获取剪贴板信息,在其点击回调onclick事件中调用systemPasteboard.setData()方法将文本复制到剪贴板中,然后通过systemPasteboard.getData()方法得到剪贴板内容
78    * 源码链接:[PasteButton.ets](feature/authorizedControl/src/main/ets/authorizedControl/PasteControl.ets)
79    * 接口参考:[@ohos.pasteboard](https://docs.openharmony.cn/pages/v5.0/zh-cn/application-dev/reference/apis-basic-services-kit/js-apis-pasteboard.md)
80
81  * 位置信息的获取
82
83    * 使用LocationButton控件获取定位信息,在其点击回调onclick事件中调用geoLocationManager.getCurrentLocation()方法得到当前定位信息经纬度。
84    * 源码链接:[LocationButton.ets](feature/authorizedControl/src/main/ets/authorizedControl/LocationControl.ets)
85    * 接口参考:[@ohos.geoLocationManager](https://docs.openharmony.cn/pages/v4.1/zh-cn/application-dev/reference/apis-location-kit/js-apis-geoLocationManager-sys.md)
86
87
88### 相关权限
89
90不涉及。
91
92### 依赖
93
94不涉及。
95
96### 约束与限制
97
981. 本示例仅支持标准系统上运行,支持设备:GPS定位功能仅支持部分机型。
992. 本示例仅支持API10版本SDK,SDK版本号(API Version 10 Release), 镜像版本号(4.0 Release)。
1003. 本示例需要使用DevEco Studio 版本号(4.0 Release)及以上版本才可编译运行。
101
102### 下载
103
104如需单独下载本工程,执行如下命令:
105
106```
107git init
108git config core.sparsecheckout true
109echo code/Solutions/IM/GrapeSquare/ > .git/info/sparse-checkout
110git remote add origin https://gitee.com/openharmony/applications_app_samples.git
111git pull origin master
112```
113