android与js传参(安卓页面传参)

发布时间:2023-12-08

android与js传参(安卓页面传参)

更新:<time datetime="2022-11-14 23:16">2022-11-14 23:16</time>

本文目录一览:

1、[如何在JAVASCRIPT调用Android JAVA函数](#如何在JAVASCRIPT调用Android JAVA函数) 2、安卓和javascript交互必须通过webView吗?可以用安卓的其他控件调用js吗?还有他们能通过volley交互吗? 3、js给android传参数怎么写 4、安卓与js交互时怎样给js端传递数据 5、android中webview与js交互 6、在Android上怎样实现JAVA和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/div 3. 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); 哪里不懂可以继续追问我