WebView 里有一个 addJavascriptInterface (Object obj, String interfaceName)方法,object为一个实例对象,你想用javascript调用的函数写在这代码如下:
package com.webview;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Toast;
public class MainActivity extends Activity {
private static final String LOG_TAG = "WebViewDemo";
private WebView mWebView;
private Handler mHandler = new Handler();
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = mWebView.getSettings();
webSettings.setSavePassword(false);
webSettings.setSaveFormData(false);
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(false);
mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");
mWebView.loadUrl("http://192.168.1.201:8080/java.html");
}
final class DemoJavaScriptInterface {
DemoJavaScriptInterface() {
}
/**
* This is not called on the UI thread. Post a runnable to invoke
* loadUrl on the UI thread.
*/
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
// mWebView.loadUrl("javascript:wave()");
Toast.makeText(getBaseContext(), "123", Toast.LENGTH_SHORT).show();
}
});
}
}
/**
* Provides a hook for calling "alert" from javascript. Useful for
* debugging your javascript.
*/
final class MyWebChromeClient extends WebChromeClient {
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
Log.d(LOG_TAG, message);
result.confirm();
return true;
}
}
}
在html里调用写法如下:
<a onClick="window.demo.clickOnAndroid()">click me</a>
分享到:
相关推荐
Android调用JavaScript以及JavaScript调用Android是Android应用开发中的重要技能,它允许我们充分利用WebView的能力,实现更丰富的交互体验。理解其工作原理和源码机制,有助于我们更好地优化性能和提升安全性。
在WebView中嵌入JavaScript代码以调用Android方法,以及如何从JavaScript调用Android方法,实现两者之间的数据交换和功能调用。通过具体的代码示例,展示了如何在Android应用中设置WebView,如何使用...
需要注意的是,为了安全起见,从JavaScript调用Android方法时,应使用`@JavascriptInterface`注解,以防止恶意代码注入。 4. **下载管理器**:Android提供了DownloadManager服务,它是系统级的下载管理工具,可以...
- JavaScript调用Android:通过`window.androidMethod()`形式的调用,JavaScript可以触发Android接口中的方法。 - Android调用JavaScript:使用`loadUrl("javascript:javascriptFunction()")`或者`...
6. **Android调用JavaScript**:除了让JavaScript调用Android方法,我们也可以反过来,通过`loadUrl()`方法来执行JavaScript代码: ```java webView.loadUrl("javascript:yourJSFunction()"); ``` 7. **注意事项**...
- `addJavascriptInterface()`方法可以让Java对象暴露给JavaScript环境,以实现JavaScript调用Java方法。需要注意的是,为了安全起见,从Android 4.2 (API Level 17)开始,暴露的对象必须通过`@JavascriptInterface...
这里需要用到WebView的`addJavascriptInterface`方法,创建一个Java对象并暴露给JavaScript调用。例如,我们可以创建一个名为`WebAppInterface`的类: ```java public class WebAppInterface { private Context ...
3. 在网页中通过JavaScript调用这个接口。 4. 处理权限请求,确保应用有权限访问相机和外部存储。 5. 在相机活动返回后,更新网页以显示拍摄的照片。 通过这样的方式,你可以在Android应用的WebView中无缝集成系统...
这样,JavaScript就可以调用这些方法,从而触发Android原生代码的行为,如启动一个新的Activity、访问本地存储或者调用系统服务。 3. JavaScript通信API: Android提供了`WebView.addJavascriptInterface()`方法,...
1. **JavaScriptInterface**: Android系统提供了`addJavascriptInterface()`方法,允许我们在WebView中注册一个Java对象,这个对象的公共方法将暴露给JavaScript调用。这样,JavaScript可以通过调用这些方法来与...
2. **Java与C++交互**:在UE中,我们可以使用Android Native Activity来启动UE应用程序。在Android端,我们需要编写一个Java类,该类继承自`ANativeActivity`,并处理生命周期事件。然后,通过JNI(Java Native ...
3. **JavaScript调用Android方法** 在HTML和JavaScript代码中,可以通过`window.android`(这里是我们在WebView中注册的名称)来调用Android的方法。例如: ```javascript window.android.showToast('Hello from ...
Android允许我们在Java代码中定义一个接口,然后在WebView中通过JavaScript调用。这是JavaScript与Activity交互的基础。首先,你需要在Activity中创建一个接口类,并将其添加到WebView的JavaScriptInterface属性中。...
然而,随着Web技术的发展,一种新的UI创建思路逐渐被引入——利用JavaScript与Android Activity进行交互,实现更灵活、更快速的界面开发。这种技术结合了Web和原生应用的优点,为开发者提供了更多可能性。 ...