安卓快速开发框架(十二)XBaseAndroid WebView
2018-07-05 本文已影响98人
往后余生9375
XBaseBrowserActivity可以用于H5应用加载,简易的浏览器,webApp等。
打开网页
ActivityRouter.getInstance()
.add(XBaseBrowserActivity.WEB_URL,XBaseBrowserActivity.ANDROID_ASSSET_PATH + "template/index.html")//加载本地asset加上XBaseBrowserActivity.ANDROID_ASSSET_PATH + 你的html路径。
.add(XBaseBrowserActivity.SHOW_TITLE_BAR,true)//是否显示标题栏
.add(XBaseBrowserActivity.SHOW_REFRESH,false)//是否可以下拉刷新
.add(XBaseBrowserActivity.STATUS_COLOR,R.color.main_color)//设置状态栏颜色,默认是蓝色
.add(XBaseBrowserActivity.START_CACHE,true)//是否开启缓存
.startActivity(this,XBaseBrowserActivity.class);
JS交互
直接可在h5网页中写入以下方法。
JS方法 | 参数 | 返回 | 备注 |
---|---|---|---|
showLoading | string | void | xbase.showLoading('正在加载中') |
closeLoading | void | void | xbase.closeLoading() |
toast | string | void | xbase.toast('弹出') |
sendEvent | int,string | void | xbase.sendEvent(1,"哈哈哈") |
getIntConfig | string | int | var config = xbase.getIntConfig('ssss') |
getStringConfig | string | string | var config = xbase.getStringConfig('ssss') |
getBooleanConfig | string | boolean | var config = xbase.getBooleanConfig('ssss') |
setInt(String,Boolean)Config | int(string,boolean) | void | var config = xbase.setInt(String,Boolean)Config() |
setCache | string,string | void | xbase.setCache('name','董') |
gettCache | string | string | xbase.getCache('name') |
close | void | void | xbase.close() |
kill | void | void | xbase.kill() |
get | string url,string tag | string | |
post | string url,string params,string tag | string | |
showNotification | 参数见演示 | void | |
alert | void | void | alert() |
confirm | string | void | confirm() |
prompt | string | string | prompt() |
openActivity | string,string | void | xbase.openActivity(); |
download | string,string,string,boolean,boolean,int | xbase.download(); | |
getNetworkStatus | void | boolean | xbase.getNetworkStatus(); |
getBooleanExtra | string,boolean | void | xbase.getBooleanExtra('ggg',false);//获取getIntent()参数 |
getIntExtra | string,int | void | xbase.getIntExtra('ggg',-1);//获取getIntent()参数 |
getStringExtra | void | string | xbase.getStringExtra('hh'); |
JS对应接口如下。传参请务必意义对应。js方法必须加上xbase.xxx();
package com.hengyi.baseandroidcore.browser;
/**
* Created:2018/8/11
* Time:0:16
* Author:dongzp
* Email:90fanhua@gmail.com
* Project:XBaseAndroid
* Use:
*/
public interface IBaseJsMapping {
void openActivity(String activityName,String params);
void showLoading(String msg);
void closeLoading();
void toast(String msg);
void sendEvent(int code,String content);
int getIntConfig(String key);
String getStringConfig(String key);
boolean getBooleanConfig(String key);
void setIntConfig(String key,int value);
void setStringConfig(String key,String value);
void setBooleanConfig(String key,boolean value);
void setCache(String key,String value);
String getCache(String key);
//关闭当前界面
void close();
//杀死APP
void kill();
void doGet(String url, final String tag,final int notifyId);
void doPost(String url, String params, final String tag, final int notifyId);
void download(String fileUrl, String saveFilename, final String authorities, boolean showNotification, boolean isCallback, final int notifyId);
void showNotification(String iconId,String resourceDir,String activityName,String tickerText,String title,String content,int notifyId);
boolean getNetworkStatus();
boolean getBooleanExtra(String name,boolean defaultValue);
int getIntExtra(String name,int defaultValue);
String getStringExtra(String name);
}
h5 演示代码
h5演示使用了Vue技术,如果您还不会。请先熟悉。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>XBaseAndroid内部网页</title>
<script src="../resources/js/vue.min.js"></script>
<script type="text/javascript">
//xbase.toast("我是网页,我调用的安卓原生的信息");
</script>
<style>
body,html{padding: 0px;margin: 0px;}
header{font-size: 20px;color:#000;padding-left:10px;height:36px;line-height: 36px;border-bottom: 1px dashed #ccc;}
.content{
text-indent: 2em;line-height: 30px;margin: 5px;
}
button{
background:#AB8BE6;
height: 40px;
line-height: 40px;
text-align: center;
border-radius: 5px;
margin:2%;
border: none;
color:#fff;
width:96%;
}
</style>
</head>
<body>
<div id="app">
<header>XBaseAndroid</header>
<div class="content">
XBaseAndroid一款集成了网络请求,本地缓存,配置文件,数据库映射,权限申请,链表管理Activity,简化Activity、Service、Broadcast启动, 万能ListView,GridView适配器、高仿IOS弹窗、倒计时/延迟执行,标题栏组件,图片显示,webview引擎,APP更新组件,APP崩溃日志组件,线程池组件,视频播放器,三级地址选择,热更新组件
</div>
<button v-on:click="btn_showloading">显示Loading</button>
<button v-on:click="btn_close">关闭当前界面</button>
<button v-on:click="btn_kill">关闭整个应用</button>
<button v-on:click="btn_get">发送get请求</button>
<button v-on:click="btn_post">发送post请求</button>
<button v-on:click="btn_alert">alert弹窗</button>
<button v-on:click="btn_confirm">confirm弹窗</button>
<button v-on:click="btn_prompt">prompt弹窗</button>
<button v-on:click="btn_notification">发送通知</button>
<button v-on:click="btn_activity">打开Activity</button>
<button v-on:click="btn_params">获取当前Activity intent参数</button>
<button v-on:click="btn_download" v-text="downloadText"></button>
</div>
<script>
var vue = null;
/**
* 1参数 是否请求成功
* 2参数 请求tag
* 3参数 notifyId 唯一标识符
*/
function httpCallback(status,tag,notifyId,response){
alert(status+","+ tag +"," + notifyId +","+ response );
xbase.closeLoading();
}
/**
* 文件下载进度条回调
*/
function downloadProgressBar(progress,progress2,speed,notifyId){
vue.downloadText = "演示下载文件 当前网速:" + speed +" 下载:" + progress;
}
/**
* 文件路径回调
*/
function downloadSuccess(filename,notifyId){
}
/**
* 下载文件开始
*/
function downloadStart(notifyId){
}
/**
* 下载错误回调 message为错误信息
*/
function downloadError(message,notifyId){
}
/**
* 保存路径回调
*/
function downloadFinish(savePath,notifyId){
}
vue = new Vue({
el:"#app",
data:{
"downloadText":"演示下载文件",
},
created:function(){
xbase.toast("当前网络状态:" + xbase.getNetworkStatus());
},
methods:{
"btn_showloading":function(){
xbase.showLoading("正在加载中");
var timer = setTimeout(function(){
xbase.closeLoading();
clearTimeout(timer);
},2000);
},
"btn_close":function(){
xbase.close();
},
"btn_kill":function(){
xbase.kill();
},
"btn_get":function(){
xbase.showLoading("正在请求中");
xbase.doGet("http://api.cleveriip.com/","123",9000);
},
"btn_post":function(){
xbase.showLoading("正在请求中");
xbase.doPost("http://api.cleveriip.com",JSON.stringify({name:"123","age":21}),"123",8000);
},
"btn_alert":function(){
alert("弹窗");
},
"btn_confirm":function(){
var res = confirm("你是安卓开发工程师吗");
alert(res);
},
"btn_prompt":function(){
var info = prompt("请输入您的姓名");
alert("您输入的姓名是:" + info);
},
"btn_notification":function(){
xbase.showNotification("head","drawable","com.hengyi.baseandroiddemo.MainActivity","您有一个通知","温馨提示","您正在使用XBaseAndroid H5功能",12566);
},
"btn_activity":function(){
xbase.openActivity("com.hengyi.baseandroiddemo.MainActivity","name=1&time=2");
},
"btn_params":function(){
var res = xbase.getBooleanExtra("show_title_bar",false);
alert("当前是否开启缓存:" + res);
},
"btn_download":function(){
var fileName = prompt("请输入保存的文件名");
if(fileName == "null" || fileName==null){
fileName = "";
}else{
fileName = fileName+".apk";
}
var showNotify = confirm("是否在通知栏显示下载进度");
xbase.download("http://sqdd.myapp.com/myapp/qqteam/tim/down/tim.apk",fileName,'authorities 不为空 如果下载的是apk会自动安装',showNotify,true,123456);
}
}
});
</script>
</body>
</html>
TIM图片20180705212905.jpg