安卓:从Java脚本java的回调函数 [英] Android : callback function from java script to java

查看:255
本文介绍了安卓:从Java脚本java的回调函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经创建了它,我使用的WebView和加载一个简单的静态的HTML页面的应用程序。我打电话从活动的一个Java脚本函数,但我无法从Java调用脚本函数。我已经试过的联系不多,但没有奏效。
<一href="http://stackoverflow.com/questions/7019265/javascript-callback-function-pass-to-android">Javascript回调函数传递到Android
<一href="http://stackoverflow.com/questions/6636118/i-cannot-call-an-android-function-from-javascript?rq=1">I不能调用从JavaScript 一个机器人功能
这是我的code。谢谢你在前进。


acitivity_main.xml

 &LT;按钮
        机器人:layout_width =match_parent
        机器人:layout_height =WRAP_CONTENT
        机器人:文本=调用JavaScript函数
        机器人:的onClick =callJavaScript/&GT;

&LT;的WebView
    机器人:ID =@ + ID / myWebView
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =FILL_PARENT/&GT;
 

index.html的

 &LT; HTML&GT;
&LT; HEAD&GT;
&LT;脚本类型=文/ JavaScript的&GT;
        功能displayMessage(){
            。的document.getElementById('测试1')的innerHTML ='这是从Java脚本。;
            Android.returnResult();
        }
    &LT; / SCRIPT&GT;
&LT; /头&GT;
&LT;身体GT;
    &LT; H1 ID =测试1&GT;的Hello World&LT; / H1&GT;
&LT; /身体GT;
&LT; / HTML&GT;
 

主要活动有以下两个功能。

 保护无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_main);
        myWebView =(web视图)this.findViewById(R.id.myWebView);
        myWebView.getSettings()setJavaScriptEnabled(真)。
        myWebView.addJavascriptInterface(新JavaScriptHandler(本),机器人);
        myWebView.loadUrl(文件:///android_asset/index.html);
    }

    公共无效callJavaScript(查看视图){
        Log.v(NULL,调用Java脚本);
        myWebView.loadUrl(JavaScript的:displayMessage());
    }
 

这是JavaScriptHandler类

 公共类JavaScriptHandler {
    语境mContext;

    公共JavaScriptHandler(上下文的背景下){
        mContext =背景;
    }

    公共无效returnResult(){
        Log.v(NULL,结果收到);
    }
}
 

解决方案

请它

  @JavascriptInterface
公共无效returnResult(){
    Log.v(NULL,结果收到);
}
 

该注释允许暴露方法的JavaScript。

I have created an application in which i am using webview and loading a simple static html page. I am calling a java script function from activity but i am unable to call a function from java script. I have tried few of the link , but it didn't work .
Javascript Callback function pass to Android
I cannot call an android function from javascript
Here is my code. Thank you in advance.


acitivity_main.xml

<Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Call JavaScript Function"
        android:onClick="callJavaScript" />

<WebView
    android:id="@+id/myWebView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

index.html

<html>
<head>
<script type="text/javascript">
        function displayMessage(){
            document.getElementById('test1').innerHTML = 'This is from java script.';
            Android.returnResult();
        }
    </script>
</head>
<body>
    <h1 id="test1">Hello World</h1>
</body>
</html>

Main activity has following two functions .

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myWebView = (WebView) this.findViewById(R.id.myWebView);
        myWebView.getSettings().setJavaScriptEnabled(true);
        myWebView.addJavascriptInterface(new JavaScriptHandler(this), "Android");
        myWebView.loadUrl("file:///android_asset/index.html");
    }

    public void callJavaScript(View view) {
        Log.v(null, "Calling java Script");
        myWebView.loadUrl("javascript:displayMessage()");
    }

This is the JavaScriptHandler class

public class JavaScriptHandler {
    Context mContext;

    public JavaScriptHandler(Context context) {
        mContext = context;
    }

    public void returnResult() {
        Log.v(null, "result received");
    }
}

解决方案

Make it

@JavascriptInterface
public void returnResult() {
    Log.v(null, "result received");
}

This annotation allows exposing methods to JavaScript.

这篇关于安卓:从Java脚本java的回调函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆