android與js傳參(安卓頁面傳參)

本文目錄一覽:

如何在JAVASCRIPT調用Android JAVA函數

首先是網頁:

%@ page language=”java” import=”java.util.*” pageEncoding=”UTF-8″%  

!DOCTYPE HTML  

html  

head  

meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″  

titlejs和android相互調用/title  

head  

  

script type=”text/javascript” language=”javascript”  

    //調用java方法jsCallJava()  

    function showHtmlcallJava() {  

        var str = window.android.jsCallJava();  

        document.getElementById(“info1”).value = str;  

    }  

  

    //調用java方法jsCallJavaWithParams(String var),帶參數  

    function showHtmlcallJava2() {  

        var str = window.android.jsCallJavaWithParams(“Devin Chen”);  

        document.getElementById(“info2”).value = str;  

    }  

  

    //提供給java調用的方法  

    function show() {  

        document.getElementById(“id_input”).value = “Java調用Html中的方法”;  

    }  

  

    //提供給java調用的方法,帶參數  

    function showWithParam(param) {  

        document.getElementById(“id_input2”).value = “Java調用Html中的方法: ” + param;  

    }  

/script  

/head  

  

body  

    input id=”info1″ style=”width: 90%” type=”text” value=”null” /br  

    input type=”button” value=”Html調用Java方法” onclick=”showHtmlcallJava()” /br  

    input id=”info2″ style=”width: 90%” type=”text” value=”null” /br  

    input type=”button” value=”Html調用帶參數的Java方法” onclick=”showHtmlcallJava2()” /br  

    input id=”id_input” style=”width: 90%” type=”text” value=”null” /br  

    input type=”button” value=”Java調用Html方法” onclick=”window.android.javaCallJavaScript()” /br  

    input id=”id_input2″ style=”width: 90%” type=”text” value=”null” /br  

    input type=”button” value=”Java調用帶參數的Html方法” onclick=”window.android.javaCallJavaScriptWithParams()” /  

/body  

/html

Android部分的布局就一個WebView,MainActivity源代碼:

/** 

 * java方法和javascript方法的相互調用 

 */  

public class MainActivity extends AppCompatActivity {  

    private static final String url = “”;  

    private WebView mWebView;  

  

    @Override  

    protected void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.activity_main);  

        initView();  

    }  

  

    private void initView() {  

        mWebView = (WebView) findViewById(R.id.web_main);  

        WebSettings settings = mWebView.getSettings();  

        settings.setJavaScriptEnabled(true);  

        settings.setDefaultTextEncodingName(“utf-8”);  

        mWebView.loadUrl(url);  

        mWebView.setWebViewClient(new WebViewClient());  

        //這兩句是必須的,”android”就是jsp中調用方法時window後面的對象  

        Object obj = getObject();  

        mWebView.addJavascriptInterface(obj, “android”);  

    }  

  

    private Object getObject() {  

  

        Object obj = new Object() {  

            /** 

             * html中的JavaScript調用Java方法 

             * 註解是必須的 

             * @return 

             */  

            @JavascriptInterface  

            public String jsCallJava() {  

                return “JavaScript調用Java方法”;  

            }  

  

            /** 

             * html中的JavaScript調用帶參數的Java方法 

             * 註解是必須的 

             * @return 

             */  

            @JavascriptInterface  

            public String jsCallJavaWithParams(String var) {  

                return “JavaScript調用帶參數的Java方法” + var;  

            }  

  

            /** 

             * java調用html中的方法,遺憾的是不知道有什麼辦法可以拿到返回值 

             */  

            @JavascriptInterface  

            public void javaCallJavaScript() {  

                runOnUiThread(new Runnable() {  

                    @Override  

                    public void run() {  

                        mWebView.loadUrl(“javascript:show()”);  

  

                    }  

                });  

            }  

  

            /** 

             * java調用html中的方法,並且傳遞參數,這個有大用 

             */  

            @JavascriptInterface  

            public void javaCallJavaScriptWithParams() {  

                runOnUiThread(new Runnable() {  

                    @Override  

                    public void run() {  

                        mWebView.loadUrl(“javascript:showWithParam(‘baoge’)”);  

                    }  

                });  

            }  

  

        };  

        return obj;  

    }  

}

安卓和javascript交互必須通過webView嗎?可以用安卓的其他控件調用js嗎?還有他們能通過volley交互嗎?

您好,很高興能幫助您,Android中webview和js之間的交互1.android中利用webview調用網頁上的js代碼。Android 中可以通過webview來實現和js的交互,在程序中調用js代碼,只需要將webview控件的支持js的屬性設置為true,,然後通過loadUrl就可以直接進行調用,如下所示:mWebView.getSettings().setJavaScriptEnabled(true);mWebView.loadUrl(“javascript:test()”);2. 網頁上調用android中java代碼的方法在網頁中調用java代碼,需要在webview控件中添加javascriptInterface。如下所示:mWebView.addJavascriptInterface(new Object() { public void clickOnAndroid() { mHandler.post(new Runnable() { public void run() { Toast.makeText(Test.this, “測試調用java”, Toast.LENGTH_LONG).show();} }); } }, “demo”);在網頁中,只需要像調用js方法一樣,進行調用就可以div id=’b’a onclick=”window.demo.clickOnAndroid()”b.c/a/div3. Java代碼調用js並傳參首先需要帶參數的js函數,如function test(str),然後只需在調用js時傳入參數即可,如下所示:mWebView.loadUrl(“javascript:test(‘aa’)”);4.Js中調用java函數並傳參首先一樣需要帶參數的函數形式,但需注意此處的參數需要final類型,即得到以後不可修改,如果需要修改其中的值,可以先設置中間變量,然後進行修改。如下所示:mWebView.addJavascriptInterface(new Object() { public void clickOnAndroid(final int i) { mHandler.post(new Runnable() { public void run() { int j = i;j++;Toast.makeText(Test.this, “測試調用java” + String.valueOf(j), Toast.LENGTH_LONG).show();}});} }, “demo”);然後在html頁面中,利用如下代碼div id=’b’a onclick=”window.demo.clickOnAndroid(2)”b.c/a/div,即可實現調用你的採納是我前進的動力,還有不懂的地方,請你繼續“追問”!如你還有別的問題,可另外向我求助;答題不易,互相理解,互相幫助!

js給android傳參數怎麼寫

webview中js調用本地java方法,這個功能實現起來稍微有點麻煩,不過也不怎麼複雜,首先要對webview綁定javascriptInterface,js腳本通過這個接口來調用java代碼。 contentWebView.addJavascriptInterface(this, “wst”); javainterface實際就是

安卓與js交互時怎樣給js端傳遞數據

alert(document.getElementById(‘ha’).innerHTML); 如果裡面是b點擊/b,得到的也是b點擊/b.或alert(document.getElementById(‘ha’).innerText); // 這個僅IE下有效,但如果裡面是b點擊/b,得到的只是”點擊”

android中webview與js交互

移動開發中,我們經常會遇到混合開發模式,經常是在移動客戶端中增加網頁,來減少客戶端的壓力,同時也讓軟件更加靈活。廢話少說,下面直接進入主題。

webView.getSettings().setAppCachePath(getCacheDir().getAbsolutePath());

webView.getSettings().setAppCacheEnabled(true);

if (Constant.DEBUG) {

webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

}

if (Build.VERSION.SDK_INT = Build.VERSION_CODES.LOLLIPOP) {

webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);

}

//參數1 定義Android 與js交互的接口, 參數2 與js交互的一個常量,可以是任意一個常量字符串,

但是h5網頁調用的時候需要增加這個參數二:handler

public class JSInterface{

@JavascriptInterface//這個標註必須加上 表示js要調用的方法,可以自動識別

public void getShareInfo(String strings) {

//todo android dosomething

}

}

那麼 js端該如何調用這個方法呢\

android 和ios的調用方法不一樣 因此 h5裡面需要區別andorid和ios機型來分別調用移動端方法

如android:

//handler 是與android 約定的常量(最好做成全局通用的常量)

//getShareInfo 是與android 定義的調用方法

以上常量、方法、參數類型 必須一致才能成功調用

WebView提供兩個事件回調類給應用層,分別為WebViewClient,WebChromeClient開發者可以繼承

這兩個類,接手相應事件處理。WebViewClient 主要提供網頁加載各個階段的通知,比如網頁開始

加載onPageStarted,網頁結束加載onPageFinished等;WebChromeClient主要提供網頁加載過程

中提供的數據內容,比如返回網頁的title,favicon等。

有需要監聽加載網頁進度

//需要webBar的可以自定義增加一個webBar

最後,就是大家都知道的webView.loadUrl(url);//url需要加載的網頁

那麼,如何在android調用js的方法呢

//getMsg() 為js裡面暴露的方法

在銷毀的時候:

protected void onDestroy() {\

super.onDestroy();\

if (webView != null) {\

webView.loadUrl(“about:blank”);\

webView.destory();\

}\

}

在Android上怎樣實現JAVA和JS交互

android調用js方法比較簡單,一行代碼搞定。

mWebView.loadUrl(“javascript:test(‘” + aa+ “‘)”);//test就是你js方法,然後是參數

然後是js調用android方法,比較複雜。

a onclick=”window.wst.test2(2)”b.c/a

這個window.wst的wst就是Android中自己定義的標識名稱,clickOnAndroid方法就是安卓中自定義的方法名。

mWebView.addJavascriptInterface(new MyTest(), “wst”);//給android添加一個js接口,標識名稱wst

//這裡的代碼是個類部類

private final class MyTest{

 @JavascriptInterface

 public void clickOnAndroid(int number) {

    MyActivity.this.runOnUiThread(new Runnable() {

        @Override

        public void run() {

          Log.i(“number”,number);//這裡所有代碼必須寫到主線程中,否則報錯。

        }

    });

  }

}

這樣就能實現js調用android。

兩個方法最重要的都是要啟用webview的js功能。

// 啟用javascript

mWebView.getSettings().setJavaScriptEnabled(true);

哪裡不懂可以繼續追問我

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/309881.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-04 19:31
下一篇 2025-01-04 19:31

相關推薦

發表回復

登錄後才能評論