安卓快速開發(fā)框架(十二)XBaseAndroid WebView引擎

XBaseBrowserActivity可以用于H5應(yīng)用加載,簡(jiǎn)易的瀏覽器,webApp等。

遇到問題看看這個(gè)

http://www.itdecent.cn/p/b860db002c5f

打開網(wǎng)頁

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)//是否顯示標(biāo)題欄
.add(XBaseBrowserActivity.SHOW_REFRESH,false)//是否可以下拉刷新
.add(XBaseBrowserActivity.STATUS_COLOR,R.color.main_color)//設(shè)置狀態(tài)欄顏色,默認(rèn)是藍(lán)色
.add(XBaseBrowserActivity.START_CACHE,true)//是否開啟緩存
.startActivity(this,XBaseBrowserActivity.class);

JS交互

直接可在h5網(wǎng)頁中寫入以下方法。

JS方法 參數(shù) 返回 備注
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 參數(shù)見演示 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()參數(shù)
getIntExtra string,int void xbase.getIntExtra('ggg',-1);//獲取getIntent()參數(shù)
getStringExtra void string xbase.getStringExtra('hh');

JS對(duì)應(yīng)接口如下。傳參請(qǐng)務(wù)必意義對(duì)應(yīng)。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);
    //關(guān)閉當(dāng)前界面
    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技術(shù),如果您還不會(huì)。請(qǐng)先熟悉。

<!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內(nèi)部網(wǎng)頁</title>
    <script src="../resources/js/vue.min.js"></script>
    <script type="text/javascript">
        //xbase.toast("我是網(wǎng)頁,我調(diào)用的安卓原生的信息");
    </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一款集成了網(wǎng)絡(luò)請(qǐng)求,本地緩存,配置文件,數(shù)據(jù)庫映射,權(quán)限申請(qǐng),鏈表管理Activity,簡(jiǎn)化Activity、Service、Broadcast啟動(dòng), 萬能ListView,GridView適配器、高仿IOS彈窗、倒計(jì)時(shí)/延遲執(zhí)行,標(biāo)題欄組件,圖片顯示,webview引擎,APP更新組件,APP崩潰日志組件,線程池組件,視頻播放器,三級(jí)地址選擇,熱更新組件
        </div>
        <button v-on:click="btn_showloading">顯示Loading</button>

        <button v-on:click="btn_close">關(guān)閉當(dāng)前界面</button>

        <button v-on:click="btn_kill">關(guān)閉整個(gè)應(yīng)用</button>

        <button v-on:click="btn_get">發(fā)送get請(qǐng)求</button>

        <button v-on:click="btn_post">發(fā)送post請(qǐng)求</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">發(fā)送通知</button>

        <button v-on:click="btn_activity">打開Activity</button>

        <button v-on:click="btn_params">獲取當(dāng)前Activity intent參數(shù)</button>

        <button v-on:click="btn_download" v-text="downloadText"></button>
</div>
<script>
var vue = null;
/**
* 1參數(shù)  是否請(qǐng)求成功
* 2參數(shù)  請(qǐng)求tag
* 3參數(shù)   notifyId 唯一標(biāo)識(shí)符
*/
function httpCallback(status,tag,notifyId,response){
    alert(status+","+ tag +"," + notifyId +","+ response );
    xbase.closeLoading();
}

/**
* 文件下載進(jìn)度條回調(diào)
*/
function downloadProgressBar(progress,progress2,speed,notifyId){
    vue.downloadText = "演示下載文件  當(dāng)前網(wǎng)速:" + speed +"  下載:" + progress;
}

/**
* 文件路徑回調(diào)
*/
function downloadSuccess(filename,notifyId){

}

/**
* 下載文件開始
*/
function downloadStart(notifyId){

}

/**
* 下載錯(cuò)誤回調(diào)  message為錯(cuò)誤信息
*/
function downloadError(message,notifyId){

}

/**
* 保存路徑回調(diào)
*/
function downloadFinish(savePath,notifyId){

}


    vue = new Vue({
        el:"#app",
        data:{
            "downloadText":"演示下載文件",
        },
        created:function(){
            xbase.toast("當(dāng)前網(wǎng)絡(luò)狀態(tài):" + 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("正在請(qǐng)求中");
                xbase.doGet("http://api.cleveriip.com/","123",9000);
            },
            "btn_post":function(){
                xbase.showLoading("正在請(qǐng)求中");
                xbase.doPost("http://api.cleveriip.com",JSON.stringify({name:"123","age":21}),"123",8000);

            },
            "btn_alert":function(){
                alert("彈窗");
            },
            "btn_confirm":function(){
                var res = confirm("你是安卓開發(fā)工程師嗎");
                alert(res);
            },
            "btn_prompt":function(){
                var info = prompt("請(qǐng)輸入您的姓名");
                alert("您輸入的姓名是:" + info);
            },
            "btn_notification":function(){
                xbase.showNotification("head","drawable","com.hengyi.baseandroiddemo.MainActivity","您有一個(gè)通知","溫馨提示","您正在使用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("當(dāng)前是否開啟緩存:" + res);
            },
            "btn_download":function(){
                var fileName = prompt("請(qǐng)輸入保存的文件名");
                if(fileName == "null" || fileName==null){
                    fileName = "";
                }else{
                    fileName = fileName+".apk";
                }
                 var showNotify = confirm("是否在通知欄顯示下載進(jìn)度");
                xbase.download("http://sqdd.myapp.com/myapp/qqteam/tim/down/tim.apk",fileName,'authorities   不為空 如果下載的是apk會(huì)自動(dòng)安裝',showNotify,true,123456);
            }
        }
    });
</script>
</body>
</html>
TIM圖片20180705212905.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 基于Vue的一些資料 內(nèi)容 UI組件 開發(fā)框架 實(shí)用庫 服務(wù)端 輔助工具 應(yīng)用實(shí)例 Demo示例 element★...
    嘗了又嘗閱讀 1,275評(píng)論 0 1
  • UI組件element ★11612 - 餓了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于...
    董董董董董董董董董大笨蛋閱讀 8,795評(píng)論 6 123
  • 來源:github.com Vue.js開源項(xiàng)目速查表:https://www.ctolib.com/cheats...
    zhangtaiwei閱讀 11,910評(píng)論 1 159
  • 轉(zhuǎn)載 :OpenDiggawesome-github-vue 是由OpenDigg整理并維護(hù)的Vue相關(guān)開源項(xiàng)目庫...
    果汁密碼閱讀 23,387評(píng)論 8 124
  • 相見,相識(shí),相熟,到相離。不好意思,讓你失望了。 曾想到最壞的結(jié)果,卻忘記原來它有前一句,做最大的努力。沒有做最大...
    Xiao_ran閱讀 224評(píng)論 0 0

友情鏈接更多精彩內(nèi)容