mirror of
https://gitee.com/openharmony/applications_settings_data
synced 2024-11-23 06:40:11 +00:00
sync code
Signed-off-by: lvxiaoqiang <lvxiaoqiang1@huawei.com>
This commit is contained in:
parent
b2a1cdb1d4
commit
b4816f1417
14
.gitignore
vendored
Normal file
14
.gitignore
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
*.iml
|
||||
.gradle
|
||||
/local.properties
|
||||
.idea
|
||||
.DS_Store
|
||||
/build
|
||||
/captures
|
||||
.externalNativeBuild
|
||||
.cxx
|
||||
/gradle
|
||||
/gradle.properties
|
||||
/entry/.gitignore
|
||||
/entry/build/
|
||||
/product/phone/build/
|
176
LICENSE
Normal file
176
LICENSE
Normal file
@ -0,0 +1,176 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
48
README.en.md
48
README.en.md
@ -1,22 +1,32 @@
|
||||
# applications_settingsdata
|
||||
|
||||
#### Description
|
||||
{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}
|
||||
Settingsdata application is a system application in openharmony system, which provides users with database access services, such as storing and reading system time, screen brightness and other system attributes.
|
||||
|
||||
#### Software Architecture
|
||||
Software architecture description
|
||||
#### Directory Structure
|
||||
|
||||
#### Installation
|
||||
|
||||
1. xxxx
|
||||
2. xxxx
|
||||
3. xxxx
|
||||
|
||||
#### Instructions
|
||||
|
||||
1. xxxx
|
||||
2. xxxx
|
||||
3. xxxx
|
||||
```
|
||||
├── entry
|
||||
│ └── src
|
||||
│ └── main
|
||||
│ └──ets
|
||||
│ │ └── MainAbility
|
||||
│ └── resources
|
||||
├── product
|
||||
│ └── phone
|
||||
│ └── src
|
||||
│ └── main
|
||||
│ ├── ets
|
||||
│ │ ├── DataAbility # Using DataAbility to provide database services
|
||||
│ │ └── utils # utils files
|
||||
│ └── resources
|
||||
│ ├── base
|
||||
│ └── rawfile
|
||||
│ └── default_settings.json # settingsdata default value file
|
||||
├── signature # Certificate files
|
||||
│
|
||||
└── LICENSE # Copyright license file
|
||||
```
|
||||
|
||||
#### Contribution
|
||||
|
||||
@ -24,13 +34,3 @@ Software architecture description
|
||||
2. Create Feat_xxx branch
|
||||
3. Commit your code
|
||||
4. Create Pull Request
|
||||
|
||||
|
||||
#### Gitee Feature
|
||||
|
||||
1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
|
||||
2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
|
||||
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
|
||||
4. The most valuable open source project [GVP](https://gitee.com/gvp)
|
||||
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
|
||||
6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
|
||||
|
50
README.md
50
README.md
@ -1,25 +1,36 @@
|
||||
# applications_settingsdata
|
||||
|
||||
|
||||
|
||||
#### 介绍
|
||||
{**以下是 Gitee 平台说明,您可以替换此简介**
|
||||
Gitee 是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台
|
||||
无论是个人、团队、或是企业,都能够用 Gitee 实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)}
|
||||
SettingsData应用是 OpenHarmony 系统中预置的系统应用,为用户提供数据库的访问存取服务,例如存储、读取系统时间,屏幕亮度等系统属性。
|
||||
|
||||
#### 软件架构
|
||||
软件架构说明
|
||||
#### 目录
|
||||
|
||||
```
|
||||
├── entry
|
||||
│ └── src
|
||||
│ └── main
|
||||
│ └──ets
|
||||
│ │ └── MainAbility
|
||||
│ └── resources
|
||||
├── product
|
||||
│ └── phone
|
||||
│ └── src
|
||||
│ └── main
|
||||
│ ├── ets
|
||||
│ │ ├── DataAbility # 使用DataAbility框架完成数据库能力
|
||||
│ │ └── utils # 相关的工具类文件
|
||||
│ └── resources
|
||||
│ ├── base
|
||||
│ └── rawfile
|
||||
│ └── default_settings.json # 设置数据库的默认值配置文件
|
||||
├── signature # 证书文件目录
|
||||
│
|
||||
└── LICENSE # 许可文件
|
||||
```
|
||||
|
||||
|
||||
#### 安装教程
|
||||
|
||||
1. xxxx
|
||||
2. xxxx
|
||||
3. xxxx
|
||||
|
||||
#### 使用说明
|
||||
|
||||
1. xxxx
|
||||
2. xxxx
|
||||
3. xxxx
|
||||
|
||||
#### 参与贡献
|
||||
|
||||
@ -29,11 +40,4 @@ Gitee 是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN
|
||||
4. 新建 Pull Request
|
||||
|
||||
|
||||
#### 特技
|
||||
|
||||
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
|
||||
2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
|
||||
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
|
||||
4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
|
||||
5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
|
||||
6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
|
||||
|
40
build.gradle
Normal file
40
build.gradle
Normal file
@ -0,0 +1,40 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
apply plugin: 'com.huawei.ohos.app'
|
||||
|
||||
//For instructions on signature configuration, see https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_debug_device-0000001053822404#section1112183053510
|
||||
ohos {
|
||||
compileSdkVersion 7
|
||||
supportSystem "standard"
|
||||
}
|
||||
|
||||
buildscript {
|
||||
repositories {
|
||||
maven {
|
||||
url 'https://repo.ark.tools.huawei.com/artifactory/maven-public/'
|
||||
}
|
||||
maven {
|
||||
url 'https://mirrors.huaweicloud.com/repository/maven/'
|
||||
}
|
||||
maven {
|
||||
url 'https://developer.huawei.com/repo/'
|
||||
}
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.huawei.ohos:hap:3.0.5.2'
|
||||
classpath 'com.huawei.ohos:decctest:1.2.7.2'
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
maven {
|
||||
url 'https://repo.ark.tools.huawei.com/artifactory/maven-public/'
|
||||
}
|
||||
maven {
|
||||
url 'https://mirrors.huaweicloud.com/repository/maven/'
|
||||
}
|
||||
maven {
|
||||
url 'https://developer.huawei.com/repo/'
|
||||
}
|
||||
}
|
||||
}
|
22
entry/build.gradle
Normal file
22
entry/build.gradle
Normal file
@ -0,0 +1,22 @@
|
||||
apply plugin: 'com.huawei.ohos.hap'
|
||||
//For instructions on signature configuration, see https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_debug_device-0000001053822404#section1112183053510
|
||||
ohos {
|
||||
compileSdkVersion 7
|
||||
defaultConfig {
|
||||
compatibleSdkVersion 7
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
proguardOpt {
|
||||
proguardEnabled false
|
||||
rulesFiles 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
}
|
||||
arkEnabled true
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
|
||||
testImplementation 'junit:junit:4.13.1'
|
||||
}
|
1
entry/proguard-rules.pro
vendored
Normal file
1
entry/proguard-rules.pro
vendored
Normal file
@ -0,0 +1 @@
|
||||
# config module specific ProGuard rules here.
|
70
entry/src/main/config.json
Normal file
70
entry/src/main/config.json
Normal file
@ -0,0 +1,70 @@
|
||||
{
|
||||
"app": {
|
||||
"singleton": true,
|
||||
"bundleName": "com.ohos.settingsdata",
|
||||
"vendor": "ohos",
|
||||
"version": {
|
||||
"code": 1000000,
|
||||
"name": "1.0.0"
|
||||
}
|
||||
},
|
||||
"deviceConfig": {
|
||||
"default" : {
|
||||
"keepAlive" : true
|
||||
}
|
||||
},
|
||||
"module": {
|
||||
"package": "com.ohos.settingsdata",
|
||||
"name": ".MyApplication",
|
||||
"deviceType": [
|
||||
"phone"
|
||||
],
|
||||
"distro": {
|
||||
"deliveryWithInstall": true,
|
||||
"moduleName": "entry",
|
||||
"moduleType": "entry",
|
||||
"installationFree": false
|
||||
},
|
||||
"abilities": [
|
||||
{
|
||||
"skills": [
|
||||
{
|
||||
"entities": [
|
||||
"entity.system.home"
|
||||
],
|
||||
"actions": [
|
||||
"action.system.home"
|
||||
]
|
||||
}
|
||||
],
|
||||
"orientation": "unspecified",
|
||||
"visible": true,
|
||||
"srcPath": "MainAbility",
|
||||
"name": ".MainAbility",
|
||||
"srcLanguage": "ets",
|
||||
"icon": "$media:icon",
|
||||
"description": "$string:mainability_description",
|
||||
"formsEnabled": false,
|
||||
"label": "$string:entry_MainAbility",
|
||||
"type": "page",
|
||||
"launchType": "standard"
|
||||
}
|
||||
],
|
||||
"js": [
|
||||
{
|
||||
"mode": {
|
||||
"syntax": "ets",
|
||||
"type": "pageAbility"
|
||||
},
|
||||
"pages": [
|
||||
"pages/index"
|
||||
],
|
||||
"name": ".MainAbility",
|
||||
"window": {
|
||||
"designWidth": 720,
|
||||
"autoDesignWidth": false
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
8
entry/src/main/ets/MainAbility/app.ets
Normal file
8
entry/src/main/ets/MainAbility/app.ets
Normal file
@ -0,0 +1,8 @@
|
||||
export default {
|
||||
onCreate() {
|
||||
console.info('SettingsData Application onCreate')
|
||||
},
|
||||
onDestroy() {
|
||||
console.info('SettingsData Application onDestroy')
|
||||
},
|
||||
}
|
22
entry/src/main/ets/MainAbility/pages/index.ets
Normal file
22
entry/src/main/ets/MainAbility/pages/index.ets
Normal file
@ -0,0 +1,22 @@
|
||||
@Entry
|
||||
@Component
|
||||
struct Index {
|
||||
build() {
|
||||
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
|
||||
Text('Hello World')
|
||||
.fontSize(50)
|
||||
.fontWeight(FontWeight.Bold)
|
||||
Button() {
|
||||
Text('SettinsData')
|
||||
.fontSize(25)
|
||||
.fontWeight(FontWeight.Bold)
|
||||
}.type(ButtonType.Capsule)
|
||||
.margin({
|
||||
top: 20
|
||||
})
|
||||
.backgroundColor('#0D9FFB')
|
||||
}
|
||||
.width('100%')
|
||||
.height('100%')
|
||||
}
|
||||
}
|
16
entry/src/main/resources/base/element/string.json
Normal file
16
entry/src/main/resources/base/element/string.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"string": [
|
||||
{
|
||||
"name": "entry_MainAbility",
|
||||
"value": "SettingsData"
|
||||
},
|
||||
{
|
||||
"name": "mainability_description",
|
||||
"value": "ETS_Empty Ability"
|
||||
},
|
||||
{
|
||||
"name": "dataability_description",
|
||||
"value": "hap sample empty provider"
|
||||
}
|
||||
]
|
||||
}
|
BIN
entry/src/main/resources/base/media/icon.png
Normal file
BIN
entry/src/main/resources/base/media/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.6 KiB |
28
entry/src/main/resources/rawfile/default_settings.json
Normal file
28
entry/src/main/resources/rawfile/default_settings.json
Normal file
@ -0,0 +1,28 @@
|
||||
{
|
||||
"settings": [
|
||||
{
|
||||
"name": "settings.screen.brightness.default",
|
||||
"value": "50"
|
||||
},
|
||||
{
|
||||
"name": "settings.time.format.default",
|
||||
"value": "24"
|
||||
},
|
||||
{
|
||||
"name": "settings.audio.ringtone.default",
|
||||
"value": "5"
|
||||
},
|
||||
{
|
||||
"name": "settings.audio.media.default",
|
||||
"value": "5"
|
||||
},
|
||||
{
|
||||
"name": "settings.audio.voicecall.default",
|
||||
"value": "5"
|
||||
},
|
||||
{
|
||||
"name": "settings.display.navigationbar_status.default",
|
||||
"value": "1"
|
||||
}
|
||||
]
|
||||
}
|
183
gradlew
vendored
Normal file
183
gradlew
vendored
Normal file
@ -0,0 +1,183 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
#
|
||||
# Copyright 2015 the original author or authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
## Gradle start up script for UN*X
|
||||
##
|
||||
##############################################################################
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
# Need this for relative symlinks.
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
fi
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
|
||||
warn () {
|
||||
echo "$*"
|
||||
}
|
||||
|
||||
die () {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
nonstop=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
NONSTOP* )
|
||||
nonstop=true
|
||||
;;
|
||||
esac
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
fi
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD="java"
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
MAX_FD="$MAX_FD_LIMIT"
|
||||
fi
|
||||
ulimit -n $MAX_FD
|
||||
if [ $? -ne 0 ] ; then
|
||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
||||
fi
|
||||
else
|
||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||
fi
|
||||
fi
|
||||
|
||||
# For Darwin, add options to specify how the application appears in the dock
|
||||
if $darwin; then
|
||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||
SEP=""
|
||||
for dir in $ROOTDIRSRAW ; do
|
||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
||||
SEP="|"
|
||||
done
|
||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
||||
# Add a user-defined pattern to the cygpath arguments
|
||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
||||
fi
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
i=0
|
||||
for arg in "$@" ; do
|
||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||
|
||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
case $i in
|
||||
0) set -- ;;
|
||||
1) set -- "$args0" ;;
|
||||
2) set -- "$args0" "$args1" ;;
|
||||
3) set -- "$args0" "$args1" "$args2" ;;
|
||||
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Escape application args
|
||||
save () {
|
||||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||
echo " "
|
||||
}
|
||||
APP_ARGS=`save "$@"`
|
||||
|
||||
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
||||
|
||||
exec "$JAVACMD" "$@"
|
103
gradlew.bat
vendored
Normal file
103
gradlew.bat
vendored
Normal file
@ -0,0 +1,103 @@
|
||||
@rem
|
||||
@rem Copyright 2015 the original author or authors.
|
||||
@rem
|
||||
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@rem you may not use this file except in compliance with the License.
|
||||
@rem You may obtain a copy of the License at
|
||||
@rem
|
||||
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||
@rem
|
||||
@rem Unless required by applicable law or agreed to in writing, software
|
||||
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
@rem See the License for the specific language governing permissions and
|
||||
@rem limitations under the License.
|
||||
@rem
|
||||
|
||||
@if "%DEBUG%" == "" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@rem Gradle startup script for Windows
|
||||
@rem
|
||||
@rem ##########################################################################
|
||||
|
||||
@rem Set local scope for the variables with windows NT shell
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
||||
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:findJavaFromJavaHome
|
||||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windows variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
set CMD_LINE_ARGS=
|
||||
set _SKIP=2
|
||||
|
||||
:win9xME_args_slurp
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||
exit /b 1
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
||||
:omega
|
13
local.properties
Normal file
13
local.properties
Normal file
@ -0,0 +1,13 @@
|
||||
## This file is automatically generated by DevEco Studio.
|
||||
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
|
||||
#
|
||||
# This file must *NOT* be checked into Version Control Systems,
|
||||
# as it contains information specific to your local configuration.
|
||||
#
|
||||
# Location of the SDK. This is only used by Gradle.
|
||||
# For customization when using a Version Control System, please read the
|
||||
# header note.
|
||||
#Tue Mar 08 09:39:25 CST 2022
|
||||
sdk.dir=D\:\\DevelopTools\\OpenHarmonySDK
|
||||
nodejs.dir=D\:\\DevelopTools\\DevEco Studio 3.0.0.800\\tools\\nodejs
|
||||
npm.dir=D\:\\DevelopTools\\DevEco Studio 3.0.0.800\\tools\\nodejs
|
1
package.json
Normal file
1
package.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
23
product/phone/build.gradle
Normal file
23
product/phone/build.gradle
Normal file
@ -0,0 +1,23 @@
|
||||
apply plugin: 'com.huawei.ohos.hap'
|
||||
//For instructions on signature configuration, see https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_debug_device-0000001053822404#section1112183053510
|
||||
ohos {
|
||||
compileSdkVersion 7
|
||||
defaultConfig {
|
||||
compatibleSdkVersion 7
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
proguardOpt {
|
||||
proguardEnabled false
|
||||
rulesFiles 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
}
|
||||
entryModules "entry"
|
||||
}
|
||||
|
||||
dependencies {
|
||||
entryImplementation project(':entry')
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
|
||||
testImplementation 'junit:junit:4.13.1'
|
||||
}
|
44
product/phone/src/main/config.json
Normal file
44
product/phone/src/main/config.json
Normal file
@ -0,0 +1,44 @@
|
||||
{
|
||||
"app": {
|
||||
"singleton": true,
|
||||
"bundleName": "com.ohos.settingsdata",
|
||||
"vendor": "ohos",
|
||||
"version": {
|
||||
"code": 1000000,
|
||||
"name": "1.0.0"
|
||||
}
|
||||
},
|
||||
"deviceConfig": {
|
||||
"default" : {
|
||||
"keepAlive" : true
|
||||
}
|
||||
},
|
||||
"module": {
|
||||
"package": "com.ohos.settingsdata",
|
||||
"name": "com.ohos.settingsdata.MyApplication",
|
||||
"mainAbility": ".data",
|
||||
"deviceType": [
|
||||
"phone"
|
||||
],
|
||||
"distro": {
|
||||
"deliveryWithInstall": true,
|
||||
"moduleName": "phone",
|
||||
"moduleType": "feature",
|
||||
"installationFree": false
|
||||
},
|
||||
"abilities": [
|
||||
{
|
||||
"srcPath": "DataAbility",
|
||||
"name": ".data",
|
||||
"icon": "$media:icon",
|
||||
"srcLanguage": "ets",
|
||||
"description": "$string:dataability_description",
|
||||
"type": "data",
|
||||
"uri": "dataability://com.ohos.settingsdata.DataAbility",
|
||||
"visible": true,
|
||||
"launchType": "singleton",
|
||||
"label": "$string:entry_MainAbility"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
170
product/phone/src/main/ets/DataAbility/data.ts
Normal file
170
product/phone/src/main/ets/DataAbility/data.ts
Normal file
@ -0,0 +1,170 @@
|
||||
/**
|
||||
* @file Describe the file
|
||||
* Copyright (c) 2021 Huawei Device Co., Ltd.
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
import Audio from '@ohos.multimedia.audio';
|
||||
import Brightness from '@ohos.brightness';
|
||||
import dataAbility from '@ohos.data.dataability';
|
||||
import SettingsDataConfig from '../utils/SettingsDataConfig';
|
||||
import SettingsDBHelper from '../utils/SettingsDBHelper';
|
||||
|
||||
let TAG = 'SettingsData ';
|
||||
let rdbStore;
|
||||
let requests:any[] = [];
|
||||
|
||||
function DoSystemSetting(value) {
|
||||
switch (value["KEYWORD"]) {
|
||||
case SettingsDataConfig.SettingsKey.SETTINGS_SCREEN_BRIGHTNESS:
|
||||
{
|
||||
try {
|
||||
console.log(TAG + 'settings Brightness start')
|
||||
Brightness.setValue(parseInt(value["VALUE"]));
|
||||
console.log(TAG + 'settings Brightness returned to indicate a successful Brightness setting.')
|
||||
} catch (err) {
|
||||
console.log(TAG + 'settings Brightness failed error = ' + JSON.stringify(err));
|
||||
}
|
||||
}break
|
||||
case SettingsDataConfig.SettingsKey.SETTINGS_AUDIO_RINGTONE:
|
||||
{
|
||||
try {
|
||||
let volumeType = Audio.AudioVolumeType.RINGTONE;
|
||||
console.log(TAG + 'settings RINGTONE start')
|
||||
Audio.getAudioManager().setVolume(volumeType, parseInt(value["VALUE"])).then(() => {
|
||||
console.log(TAG + 'settings Promise returned to indicate a successful RINGTONE setting.')
|
||||
});
|
||||
} catch (err) {
|
||||
console.log(TAG + 'settings RINGTONE failed error = ' + JSON.stringify(err));
|
||||
}
|
||||
}break
|
||||
case SettingsDataConfig.SettingsKey.SETTINGS_AUDIO_MEDIA:
|
||||
{
|
||||
try {
|
||||
let volumeType = Audio.AudioVolumeType.MEDIA;
|
||||
console.log(TAG + 'settings MEDIA start')
|
||||
Audio.getAudioManager().setVolume(volumeType, parseInt(value["VALUE"])).then(() => {
|
||||
console.log(TAG + 'settings Promise returned to indicate a successful MEDIA setting.')
|
||||
});
|
||||
} catch (err) {
|
||||
console.log(TAG + 'settings MEDIA failed error = ' + JSON.stringify(err));
|
||||
}
|
||||
}break
|
||||
case SettingsDataConfig.SettingsKey.SETTINGS_AUDIO_VOICE_CALL:
|
||||
{
|
||||
try {
|
||||
let volumeType = Audio.AudioVolumeType.VOICE_CALL;
|
||||
console.log(TAG + 'settings VOICE_CALL start')
|
||||
Audio.getAudioManager().setVolume(volumeType, parseInt(value["VALUE"])).then(() => {
|
||||
console.log(TAG + 'settings Promise returned to indicate a successful VOICE_CALL setting.')
|
||||
});
|
||||
} catch (err) {
|
||||
console.log(TAG + 'settings VOICE_CALL failed error = ' + JSON.stringify(err));
|
||||
}
|
||||
}break
|
||||
default :
|
||||
{
|
||||
console.log(TAG + value["KEYWORD"]+' key is not brightness or audio');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
onInitialized(abilityInfo) {
|
||||
console.log(TAG + 'onInitialize start');
|
||||
SettingsDBHelper.getInstance().getRdbStore().then((rdb : any)=>{
|
||||
console.log(TAG+ " onInitialized rdb:" + rdb);
|
||||
rdbStore = rdb;
|
||||
console.log(TAG+ " onInitialized requests:" + JSON.stringify(requests));
|
||||
for(let i = 0; i < requests.length; i++) {
|
||||
let opt : string = requests[i]["operation"];
|
||||
let columns = requests[i]["columns"];
|
||||
let predicates = requests[i]["predicates"];
|
||||
let value = requests[i]["value"];
|
||||
if (opt == "insert") {
|
||||
rdbStore.insert(SettingsDataConfig.TABLE_NAME, value, function (err, ret) {
|
||||
console.log(TAG + 'onInitialized insert ret: ' + ret);
|
||||
});
|
||||
} else if (opt == "query") {
|
||||
let rdbPredicates = dataAbility.createRdbPredicates(SettingsDataConfig.TABLE_NAME, predicates);
|
||||
rdbStore.query(rdbPredicates, columns, function (err, resultSet) {
|
||||
console.log(TAG + 'onInitialized query ret: ' + JSON.stringify(resultSet));
|
||||
});
|
||||
} else if (opt == "update") {
|
||||
let rdbPredicates = dataAbility.createRdbPredicates(SettingsDataConfig.TABLE_NAME, predicates);
|
||||
rdbStore.update(value, rdbPredicates, function (err, ret) {
|
||||
console.log(TAG + 'onInitialized update ret: ' + ret);
|
||||
});
|
||||
}
|
||||
}
|
||||
}).catch(err => {
|
||||
console.log(TAG + 'onInitialize failed');
|
||||
})
|
||||
console.log(TAG + 'onInitialize end');
|
||||
},
|
||||
|
||||
insert(uri, value, callback) {
|
||||
console.log(TAG + 'insert keyword = ' + value["KEYWORD"] + ' start:' + uri);
|
||||
DoSystemSetting(value);
|
||||
if (rdbStore == null) {
|
||||
let request= {"operation":"insert", "columns" : null, "predicates" : null, value:value};
|
||||
console.log(TAG + 'insert request = '+ JSON.stringify(request));
|
||||
requests.push(request);
|
||||
callback(-1, 0);
|
||||
} else {
|
||||
rdbStore.insert(SettingsDataConfig.TABLE_NAME, value, function (err, ret) {
|
||||
console.log(TAG + 'insert before callback ');
|
||||
callback(err, ret);
|
||||
console.log(TAG + 'insert after callback ');
|
||||
console.log(TAG + 'insert result: ' + ret);
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
query(uri, columns, predicates, callback) {
|
||||
console.log(TAG + 'query start uri:' + uri);
|
||||
if (rdbStore == null) {
|
||||
let request= {"operation":"query", "columns" : columns, "predicates" : predicates, value:""};
|
||||
console.log(TAG + 'query request = '+ JSON.stringify(request));
|
||||
requests.push(request);
|
||||
callback(-1, {"_napiwrapper":{}});
|
||||
} else {
|
||||
let rdbPredicates = dataAbility.createRdbPredicates(SettingsDataConfig.TABLE_NAME, predicates);
|
||||
rdbStore.query(rdbPredicates, columns, function (err, resultSet) {
|
||||
console.log(TAG + 'query before callback err:' + JSON.stringify(err) + " ResultSet" + JSON.stringify(resultSet));
|
||||
callback(err, resultSet);
|
||||
console.log(TAG + 'query after callback ');
|
||||
console.log(TAG + 'query result: '+ JSON.stringify(resultSet));
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
update(uri, value, predicates, callback) {
|
||||
console.log(TAG + 'update keyword = ' + value["KEYWORD"] + ' start:' + uri);
|
||||
DoSystemSetting(value);
|
||||
if (rdbStore == null) {
|
||||
let request = {"operation":"update", "columns" : null, "predicates" : predicates, value : value};
|
||||
console.log(TAG + 'update request = '+ JSON.stringify(request));
|
||||
requests.push(request);
|
||||
callback(-1, 0);
|
||||
} else {
|
||||
let rdbPredicates = dataAbility.createRdbPredicates(SettingsDataConfig.TABLE_NAME, predicates);
|
||||
rdbStore.update(value, rdbPredicates, function (err, ret) {
|
||||
console.log(TAG + 'update before callback ' + JSON.stringify(err));
|
||||
callback(err, ret);
|
||||
console.log(TAG + 'update after callback ' + JSON.stringify(ret));
|
||||
console.log(TAG + 'update result: ' + ret);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
};
|
215
product/phone/src/main/ets/utils/SettingsDBHelper.ets
Normal file
215
product/phone/src/main/ets/utils/SettingsDBHelper.ets
Normal file
@ -0,0 +1,215 @@
|
||||
/**
|
||||
* @file Describe the file
|
||||
* Copyright (c) 2021 Huawei Device Co., Ltd.
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import data_storage from '@ohos.data.storage';
|
||||
import fileio from '@ohos.fileio';
|
||||
import ohosDataRdb from '@ohos.data.rdb';
|
||||
import SettingsDataConfig from '../utils/SettingsDataConfig';
|
||||
import deviceinfo from '@ohos.deviceinfo';
|
||||
|
||||
let DDL_TABLE_CREATE = `CREATE TABLE IF NOT EXISTS ${SettingsDataConfig.TABLE_NAME} (`
|
||||
+ `${SettingsDataConfig.FIELD_ID} INTEGER PRIMARY KEY AUTOINCREMENT, `
|
||||
+ `KEYWORD TEXT, `
|
||||
+ `VALUE TEXT CHECK (LENGTH(VALUE)<=1000))`;
|
||||
|
||||
const FILE_URI = "/data/accounts/account_0/applications/com.ohos.settingsdata"
|
||||
+ "/com.ohos.settingsdata/assets/phone/resources/rawfile";
|
||||
|
||||
const STORAGE_URI = "/data/accounts/account_0/appdata/com.ohos.settingsdata/sharedPreference/";
|
||||
|
||||
let DEFAULT_JSON_FILE_PATH = FILE_URI + "/default_settings.json";
|
||||
let SETTINGSDATA_PREFERENCE = STORAGE_URI + "/SettingsDataPreference";
|
||||
|
||||
let DefaultKey = SettingsDataConfig.DefaultKey;
|
||||
let SettingsKey = SettingsDataConfig.SettingsKey;
|
||||
|
||||
const DefalutKVGlobal = {
|
||||
"settings.screen.brightness.default": "50",
|
||||
"settings.time.format.default": "24",
|
||||
"settings.audio.ringtone.default": "5",
|
||||
"settings.audio.media.default": "5",
|
||||
"settings.audio.voicecall.default": "5",
|
||||
"settings.display.navigationbar_status.default": "1",
|
||||
};
|
||||
|
||||
let TAG = "SettingsDBHelper ";
|
||||
|
||||
class SettingsDBHelper {
|
||||
private startup_flag: boolean;
|
||||
private rdbStore_;
|
||||
private static instance_: SettingsDBHelper;
|
||||
|
||||
private constructor() {
|
||||
this.startup_flag = false;
|
||||
this.rdbStore_ = undefined;
|
||||
console.log(TAG + 'call construstor');
|
||||
}
|
||||
|
||||
private startupConfig() {
|
||||
console.log(TAG + "startupConfig start");
|
||||
let storage = data_storage.getStorageSync(SETTINGSDATA_PREFERENCE);
|
||||
console.log(TAG + "startupConfig getStorageSync = " + storage);
|
||||
let isExist = storage.hasSync('startup')
|
||||
console.log(TAG + "startupConfig hasSync = " + isExist);
|
||||
if (!isExist) {
|
||||
console.info(TAG + "The key of startup is not contained.")
|
||||
console.log(TAG + "startupConfig putSync start");
|
||||
storage.putSync('startup', 'auto');
|
||||
console.log(TAG + "startupConfig flushSync start");
|
||||
storage.flushSync();
|
||||
console.log(TAG + "startupConfig flushSync end");
|
||||
this.startup_flag = true;
|
||||
} else {
|
||||
let startup = storage.getSync('startup', 'null');
|
||||
console.log(TAG + "startupConfig getSync startup = " + startup);
|
||||
}
|
||||
console.log(TAG + "startupConfig end");
|
||||
return;
|
||||
}
|
||||
|
||||
public async initRdbStore() {
|
||||
console.log(TAG + 'call initRdbStore start');
|
||||
this.rdbStore_ = await ohosDataRdb.getRdbStore({ name: SettingsDataConfig.DB_NAME }, 1);
|
||||
console.log(TAG + 'call initRdbStore, rdbStore_ = ' + this.rdbStore_);
|
||||
|
||||
console.log(TAG + "initRdbStore executeSql");
|
||||
await this.rdbStore_.executeSql(DDL_TABLE_CREATE, []);
|
||||
|
||||
console.log(TAG + 'getRdbStore startupConfig');
|
||||
this.startupConfig();
|
||||
|
||||
console.log(TAG + 'initRdbStore getDefaultSettingsKV');
|
||||
let defaultKV = this.getDefaultSettingsKV();
|
||||
|
||||
if (this.startup_flag) {
|
||||
console.log(TAG + 'initRdbStore loadDefaultSettings');
|
||||
await this.loadDefaultSettings(defaultKV);
|
||||
} else {
|
||||
console.log(TAG + 'initRdbStore not need loadDefaultSettings');
|
||||
}
|
||||
console.log(TAG + 'call initRdbStore end');
|
||||
return this.rdbStore_;
|
||||
}
|
||||
|
||||
public static getInstance() {
|
||||
if (!SettingsDBHelper.instance_) {
|
||||
console.log(TAG + 'call getInstance start');
|
||||
SettingsDBHelper.instance_ = new SettingsDBHelper();
|
||||
console.log(TAG + 'call getInstance end');
|
||||
}
|
||||
return SettingsDBHelper.instance_;
|
||||
}
|
||||
|
||||
public async getRdbStore() {
|
||||
console.log(TAG + 'call getRdbStore start');
|
||||
return await SettingsDBHelper.instance_.initRdbStore();
|
||||
}
|
||||
|
||||
private async loadSettings(rdbStore_, key, value): Promise<void> {
|
||||
console.log(TAG + "key=" + key + " value " + value);
|
||||
await this.rdbStore_.insert(
|
||||
SettingsDataConfig.TABLE_NAME,
|
||||
{ "KEYWORD": key, "VALUE": value },
|
||||
(err, ret) => {
|
||||
if (err) {
|
||||
console.log(TAG + "loadSettings insert error:" + JSON.stringify(err));
|
||||
}
|
||||
console.log(TAG + "loadSettings insert ret = " + ret);
|
||||
});
|
||||
}
|
||||
|
||||
private async loadDefaultSettings(defaultKV) {
|
||||
console.log(TAG + "loadDefaultSettings start");
|
||||
|
||||
await this.loadSettings(this.rdbStore_,
|
||||
SettingsKey.SETTINGS_SCREEN_BRIGHTNESS, defaultKV[DefaultKey.SETTINGS_SCREEN_BRIGHTNESS_DEFAULT]);
|
||||
|
||||
await this.loadSettings(this.rdbStore_,
|
||||
SettingsKey.SETTINGS_TIME_FORMAT, defaultKV[DefaultKey.SETTINGS_TIME_FORMAT_DEFAULT]);
|
||||
|
||||
await this.loadSettings(this.rdbStore_,
|
||||
SettingsKey.SETTINGS_AUDIO_RINGTONE, defaultKV[DefaultKey.SETTINGS_AUDIO_RINGTONE_DEFAULT]);
|
||||
|
||||
await this.loadSettings(this.rdbStore_,
|
||||
SettingsKey.SETTINGS_AUDIO_MEDIA, defaultKV[DefaultKey.SETTINGS_AUDIO_MEDIA_DEFAULT]);
|
||||
|
||||
await this.loadSettings(this.rdbStore_,
|
||||
SettingsKey.SETTINGS_AUDIO_VOICE_CALL, defaultKV[DefaultKey.SETTINGS_AUDIO_VOICE_CALL_DEFAULT]);
|
||||
|
||||
await this.loadSettings(this.rdbStore_,
|
||||
SettingsKey.SETTINGS_GENERAL_DEVICE_NAME, defaultKV[DefaultKey.SETTINGS_GENERAL_DEVICE_NAME_DEFAULT]);
|
||||
|
||||
await this.loadSettings(this.rdbStore_,
|
||||
SettingsKey.SETTINGS_DISPALY_NAVBAR_STATUS, defaultKV[DefaultKey.SETTINGS_DISPALY_NAVBAR_STATUS_DEFAULT]);
|
||||
|
||||
console.log(TAG + "loadDefaultSettings end");
|
||||
return;
|
||||
}
|
||||
|
||||
private readDefaultFile(): string {
|
||||
console.log(TAG + "readDefaultFile start");
|
||||
let str: string = "";
|
||||
let ss;
|
||||
try {
|
||||
ss = fileio.createStreamSync(DEFAULT_JSON_FILE_PATH, "r");
|
||||
console.log(TAG + "readDefaultFile createStreamSync = " + ss);
|
||||
let buf = new ArrayBuffer(4096);
|
||||
let num = ss.readSync(buf);
|
||||
while (num) {
|
||||
console.log(TAG + "readDefaultFile readSync num = " + num + " buff = " + new Uint8Array(buf.slice(0, num)));
|
||||
str = str.concat(String.fromCharCode.apply(null, new Uint8Array(buf.slice(0, num))));
|
||||
num = ss.readSync(buf);
|
||||
}
|
||||
ss.closeSync();
|
||||
console.log(TAG + "readDefaultFile readSync = " + JSON.stringify(str));
|
||||
} catch (err) {
|
||||
console.log(TAG + "readDefaultFile readSync err" + err);
|
||||
if (ss) {
|
||||
ss.closeSync();
|
||||
}
|
||||
}
|
||||
console.log(TAG + "readDefaultFile end");
|
||||
return str;
|
||||
}
|
||||
|
||||
private getDefaultSettingsKV() {
|
||||
console.log(TAG + "getDefaultSettingsKV start");
|
||||
let defaultKV = {};
|
||||
try {
|
||||
let content = this.readDefaultFile();
|
||||
if (!content) {
|
||||
console.log(TAG + "getDefaultSettingsKV readDefaultFile err! context = " + content);
|
||||
throw new Error("readfile error!")
|
||||
}
|
||||
let defaultJson = JSON.parse(content);
|
||||
console.log(TAG + "getDefaultSettingsKV parse = " + JSON.stringify(defaultJson));
|
||||
for (var index = 0; index < defaultJson.settings.length; index++) {
|
||||
defaultKV[defaultJson.settings[index].name] = defaultJson.settings[index].value;
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(TAG + "getDefaultSettingsKV catch err! err = " + err);
|
||||
defaultKV = DefalutKVGlobal;
|
||||
}
|
||||
let deviceName : string = deviceinfo.marketName;
|
||||
if (deviceName.startsWith('"') && deviceName.endsWith('"')) {
|
||||
deviceName = JSON.parse(deviceName);
|
||||
}
|
||||
defaultKV[DefaultKey.SETTINGS_GENERAL_DEVICE_NAME_DEFAULT] = deviceName;
|
||||
return defaultKV;
|
||||
}
|
||||
}
|
||||
|
||||
export default SettingsDBHelper;
|
47
product/phone/src/main/ets/utils/SettingsDataConfig.ets
Normal file
47
product/phone/src/main/ets/utils/SettingsDataConfig.ets
Normal file
@ -0,0 +1,47 @@
|
||||
/**
|
||||
* @file Describe the file
|
||||
* Copyright (c) 2021 Huawei Device Co., Ltd.
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
enum DefaultKey {
|
||||
SETTINGS_SCREEN_BRIGHTNESS_DEFAULT = "settings.screen.brightness.default",
|
||||
SETTINGS_TIME_FORMAT_DEFAULT = "settings.time.format.default",
|
||||
SETTINGS_AUDIO_RINGTONE_DEFAULT = "settings.audio.ringtone.default",
|
||||
SETTINGS_AUDIO_MEDIA_DEFAULT = "settings.audio.media.default",
|
||||
SETTINGS_AUDIO_VOICE_CALL_DEFAULT = "settings.audio.voicecall.default",
|
||||
SETTINGS_GENERAL_DEVICE_NAME_DEFAULT = "settings.general.device_name.default",
|
||||
SETTINGS_DISPALY_NAVBAR_STATUS_DEFAULT = "settings.display.navigationbar_status.default",
|
||||
};
|
||||
|
||||
enum SettingsKey {
|
||||
SETTINGS_SCREEN_BRIGHTNESS = "settings.screen.brightness",
|
||||
SETTINGS_TIME_FORMAT = "settings.time.format",
|
||||
SETTINGS_AUDIO_RINGTONE = "settings.audio.ringtone",
|
||||
SETTINGS_AUDIO_MEDIA = "settings.audio.media",
|
||||
SETTINGS_AUDIO_VOICE_CALL = "settings.audio.voicecall",
|
||||
SETTINGS_GENERAL_DEVICE_NAME = "settings.general.device_name",
|
||||
SETTINGS_DISPALY_NAVBAR_STATUS = "settings.display.navigationbar_status",
|
||||
};
|
||||
|
||||
const SettingsDataConfig = {
|
||||
DB_NAME: 'settingsdata.db',
|
||||
TABLE_NAME: 'SETTINGSDATA',
|
||||
FIELD_ID: 'ID',
|
||||
FIELD_KEYWORD: 'KEYWORD',
|
||||
FIELD_VALUE: 'VALUE',
|
||||
DefaultKey: DefaultKey,
|
||||
SettingsKey: SettingsKey,
|
||||
};
|
||||
|
||||
export default SettingsDataConfig;
|
16
product/phone/src/main/resources/base/element/string.json
Normal file
16
product/phone/src/main/resources/base/element/string.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"string": [
|
||||
{
|
||||
"name": "entry_MainAbility",
|
||||
"value": "SettingsData"
|
||||
},
|
||||
{
|
||||
"name": "mainability_description",
|
||||
"value": "ETS_Empty Ability"
|
||||
},
|
||||
{
|
||||
"name": "dataability_description",
|
||||
"value": "hap sample empty provider"
|
||||
}
|
||||
]
|
||||
}
|
BIN
product/phone/src/main/resources/base/media/icon.png
Normal file
BIN
product/phone/src/main/resources/base/media/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.6 KiB |
@ -0,0 +1,28 @@
|
||||
{
|
||||
"settings": [
|
||||
{
|
||||
"name": "settings.screen.brightness.default",
|
||||
"value": "50"
|
||||
},
|
||||
{
|
||||
"name": "settings.time.format.default",
|
||||
"value": "24"
|
||||
},
|
||||
{
|
||||
"name": "settings.audio.ringtone.default",
|
||||
"value": "5"
|
||||
},
|
||||
{
|
||||
"name": "settings.audio.media.default",
|
||||
"value": "5"
|
||||
},
|
||||
{
|
||||
"name": "settings.audio.voicecall.default",
|
||||
"value": "5"
|
||||
},
|
||||
{
|
||||
"name": "settings.display.navigationbar_status.default",
|
||||
"value": "1"
|
||||
}
|
||||
]
|
||||
}
|
2
settings.gradle
Normal file
2
settings.gradle
Normal file
@ -0,0 +1,2 @@
|
||||
include ':entry',':phone'
|
||||
project(':phone').projectDir = new File('./product/phone')
|
BIN
signature/settingsdata.p7b
Normal file
BIN
signature/settingsdata.p7b
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user