android webview js 交互框架,自定义android混合框架开发实践1:实现基础andorid和webview交互...
1. 本地web資源
1.構建assets/web文件夾
2.創建index.html你的html代碼
3.使用本地web資源WebView mv = findViewById(...);
mv.loadUrl("file:///android_asset/web/index.html")
2.實現基礎的android和js交互
(1). 實現js調用andorid方法
在Acitivity內構建一個function@JavascriptInterface
public void test(){
Log.e("測試","====");
}
@JavascriptInterface 在新版本的api內必須 否則無效果
將android對象轉js對象供js調用WebView mv = findViewById(...);
mv.addJavascriptInterface(this,"activity")
mv.loadUrl("file:///android_asset/web/index.html")
js調用window.activity.test()
(2). android 調用 js方法WebView mv = findViewById(...);
mv.getSettings().setJavaScriptEnabled(true);
mv.loadUrl("javascript:alert('test')");
(3). js傳參回調函數給android觸發
注入一個js對象,存儲回調函數
js對象var callbacks = {
fns:[],
add(fn){this.fns.push(fn);return this.fns.length-1;},
get(id){return this.fns[id];}
}
注入方式WebView vc = findViewById(...);
vc.getSettings().setJavaScriptEnabled(true);
vc.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url)
{
super.onPageFinished(view, url);
vc.loadUrl("javascript:js代碼");
}
});
android 回調方法@JavascriptInterface
public void callback(String msg,int callback_id){
mHandler.post(new Runnable() {
@Override
public void run() {
WebView vc = findViewById(...);
vc.getSettings().setJavaScriptEnabled(true);
vc.loadUrl("javascript:callbacks.get("+callback_id+")('"+msg+"')");
}
});
}
js端調用var callback_id = callbacks.add(function(msg){
alert(msg)
});
window.activity.callback("測試",callback_id)
(4) android 調用js并獲取返回值mWebView.evaluateJavascript("javascript:test()", new ValueCallback() {
@Override
public void onReceiveValue(String response) {
}
});
總結
以上是生活随笔為你收集整理的android webview js 交互框架,自定义android混合框架开发实践1:实现基础andorid和webview交互...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10苹果电脑截图按键(win10苹
- 下一篇: android readonly fil