安卓开发者联盟

安卓快速开发框架(十二)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
上一篇下一篇

猜你喜欢

热点阅读