快应用是一种基于行业标准开发的新型免安装应用,其标准由主流手机厂商组成的快应用联盟联合制定。开发者开发一次即可将应用分发到所有支持行业标准的手机运行。
在本次Codelab中,您将使用快应用IDE开发一个简易浏览器客户端,实现功能要求如下:
Android基础开发能力。
在正式开发快应用前,您需要完成以下准备工作:
至此,已经创建了一个快应用项目。
网页整体采用竖向布局,分为输入区和网页展示区两部分。
<template>
<div class="container">
<div class="header">
<div class="scan" onclick="scanCode"><text>scan</text></div>
<div class="input"><input id="selectionInput" value="{{searchWord}}" onchange="changeWord" /></div>
<div class="search" onclick="search"><text>search</text></div>
</div>
<div class="content">
<web src="{{url}}" onpagefinish="onPageFinish" id="web"></web>
</div>
</div>
</template>
替换hello.ux 文件中style部分的代码,增加输入区和网页展示区的CSS样式。
<style>
.container {
flex-direction: column;
justify-content: center;
align-items: center;
padding: 15px;
}
.content {
width: 100%;
height: 100%;
margin-top: 50px;
}
.header div {
border: 1px solid #afafff;
padding: 20px;
}
.header .scan,
.header .search {
width: 20%;
}
.header .scan text,
.header .search text {
margin: 0 auto;
}
.header input {
width: 60%;
}
</style>
在Script内实现所有操作的逻辑处理,主要实现:扫一扫、记录输入的内容、搜索和获取当前网址并存储。
<script>
import barcode from '@system.barcode';
import storage from '@system.storage';
module.exports = {
data: {
componentData: {},
//the following is the default webpage
url: 'https://developer.huawei.com/consumer/cn/quickApp',
searchWord: '',
},
//scan
scanCode() {
let that = this;
barcode.scan({
success: function (data) {
console.log('handling success: ' + data.result);
that.url = data.result;
},
fail: function (data, code) {
console.log('handling fail, code = ' + code);
}
})
},
//record the input
changeWord(e) {
this.searchWord = e.value;
},
//search
search() {
this.$element('selectionInput').focus({ focus: false })
this.url = "https://developer.huawei.com/consumer/cn/doc/search?val=" + this.searchWord;
},
//get the current url and store it
onPageFinish(e) {
console.log('pagefinish: ' + e.url);
storage.set({
key: 'webUrl',
value: e.url,
success: function (data) {
console.log("handling success");
},
fail: function (data, code) {
console.log("handling fail, code = " + code);
}
})
},
//the onBackPress callback needs to be implemented when the webpage goes back
onBackPress() {
this.$element('web').canBack({
callback: function (e) {
if (e) {
this.$element('web').back();
} else {
let router = require('@system.router');
router.back()
}
}.bind(this)
})
return true;
},
//obtain the stored url when reopening the webpage
onInit() {
let that = this;
storage.get({
key: 'webUrl',
success: function (data) {
console.log("handling success:", data);
that.url = data;
},
fail: function (data, code) {
console.log("handling fail, code = " + code);
}
})
this.$page.setTitleBar({
text: 'BrowserDemo',
textColor: '#ffffff',
backgroundColor: '#007DFF',
backgroundOpacity: 0.5,
menu: true
});
}
}
</script>
打开Manifest.json文件,声明需要使用的内容。
"features": [
{"name": "system.barcode"},
{"name": "system.storage"}],
通过发布体验版本,华为快应用IDE会生成体验码,其他用户使用"快应用研发助手"通过扫描二维码或者输入体验码,就可提前体验开发完的快应用。
干得好,您已经成功完成了codelab并学到了:
您可以阅读下面链接,了解更多相关的信息: