思路: 1、需要使用webview打開網頁 2、設置webview支持腳本 3、然後通過webview的loadUrl方式進行js函數調用 代碼: webview.getSettings().setJavaScriptEnabled(true);webview.addJavascriptInterface(object,"name");//把Name="name"的對象...
⑵ android 中如何去執行js腳本
android要執行腳本,只有通過本地的webview打開腳本頁面。
調用步驟
1、設置webview支持腳本
webSettings.setJavaScriptEnabled(true);
2、打開腳本頁面
mWebView.loadUrl("file:///android_asset/demo.html");//這里打開該app的asset目錄下的demo.html,裡面含有wave函數腳本
3、調用腳本
mWebView.loadUrl("javascript:wave()");//調用打開頁面中的wave函數
⑶ android調用js @javascriptinterface報錯
不要加在構造方法上,加在你要調用的方法上。
⑷ Android調用js的問題
android怎樣調用js文件裡面的方法
如果多個線程同時訪問一個集合,而其中至少一個線程修改了該集合,那麼它必須 保持外部同步。這通常是通過對自然封裝該集合的對象執行同步操作來完成的。如果不存在這樣的對象,則應該使用 Collections.synchronizedSet 方法來「包裝」集合。最好在創建時完成這一操作,以防止對 HashSet 實例進行意外的不同步訪問:
Set s = Collections.synchronizedSet(new HashSet(...));
⑸ android 中怎麼執行js腳本
android要執行腳本,只有通過本地的webview打開腳本頁面。
調用步驟
1、設置webview支持腳本
webSettings.setJavaScriptEnabled(true);
2、打開腳本頁面
mWebView.loadUrl("file:///android_asset/demo.html");//這里打開該app的asset目錄下的demo.html,裡面含有wave函數腳本
3、調用腳本
mWebView.loadUrl("javascript:wave()");//調用打開頁面中的wave函數
⑹ 如何在android平台上使用js直接調用Java方法
在布局文件里添加一個WebView,設置它的id為webview。
然後在java中:
WebViewweb=(WebView)findViewById(R.id.webview);
web.getSettings().setJavaScriptEnabled(true);
web.loadUrl("
);
web.addJavascriptInterface(newJSinterface,"interface");//interface可以自定義,在調用時使用這個,第一個參數是下面的類
再建一個內部類:
publicclassJSinterface
{
publicvoidmethod()
{
Toast.maketext(this,"JavaScript",0).show();
}
}
可以在網頁webview 中載入的網頁中 調用 可以這樣調用:
interface.method();
⑺ android java怎麼調用webview中js方法
Android平台上使用js調用java方法,主要是通過webview控制項提供的 webview.addJavascriptInterface(new Person(this), "per"); 這個方法將java對象注入到js中,然後可以在js中通過調用該java對象的方法來實現回調,如下代碼:
1.html文件,demo.html<html> <head> <script type="text/javascript" > function updateHtml(type,type2){ document.getElementById("content").innerHTML = "彈出對話框,測試"+type+type2; alert("dialog"); } </script> </head> <body> 這是一個js與android的例子 <a onClick="window.ceshi.startFunction()" href="">彈出對話框</a> 調用對象方法 <a onClick="per.print()" href="">調用對象方法</a> <span id="content"></span> </body> </html>
⑻ android里如何調用Js里的函數
Android中內置了WebKit模塊,而該模塊的Java層視圖類就是WebView,所有需要使用Web瀏覽器功能的Android都需要創建該視圖類對象顯示和處理請求的網路資源。目前WebKit支持Http、Https、Ftp和JavaScript請求。
1、在Assets下放一個簡單的html文件jstest.html
<HTML>
<HEAD>
<metaname="viewport"content="width=device-width,target-densitydpi=device-dpi"/>
<METAhttp-equiv="Content-Type"content="text/html;charset=UTF-8">
<script>
functionshowMsg(){
alert("helloworld!");
}
functionshowMsgInAndroid(){
myjs.showMsg('helloinandroid!');
}
</script>
</HEAD>
<BODY>
<span>測試js使用</span>
<buttonid='btntest'onclick='showMsgInAndroid()'>調用android方法</button>
</BODY>
</HTML>
2、布局文件main.xml
<?xmlversion="1.0"encoding="utf-8"?>
<RelativeLayout
android:id="@+id/rl_main"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<WebView
android:id="@+id/wv_test"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/btn_showmsg"/>
<Button
android:id="@+id/btn_showmsg"
android:layout_width="200dip"
android:layout_height="40dip"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="調用html中js方法"/>
</RelativeLayout>
3、然後是Activity,MainActivity.java
packagecom.harold.jstest;
importcom.harold.base.JSKit;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.webkit.WebChromeClient;
importandroid.webkit.WebView;
importandroid.widget.Button;
{
privateWebViewmWebView;
privateButtonbtnShowInfo;
privateJSKitjs;
privateHandlermHandler=newHandler();
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//初始化控制項
mWebView=(WebView)findViewById(R.id.wv_test);
btnShowInfo=(Button)findViewById(R.id.btn_showmsg);
//實例化js對象
js=newJSKit(this);
//設置參數
mWebView.getSettings().setBuiltInZoomControls(true);
//內容的渲染需要webviewChromClient去實現,
//設置webviewChromClient基類,解決js中alert不彈出的問題和其他內容渲染問題
mWebView.setWebChromeClient(newWebChromeClient());
mWebView.getSettings().setJavaScriptEnabled(true);
//把js綁定到全局的myjs上,myjs的作用域是全局的,初始化後可隨處使用
mWebView.addJavascriptInterface(js,"myjs");
mWebView.loadUrl("file:///android_asset/jstest.html");
btnShowInfo.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
mHandler.post(newRunnable(){
@Override
publicvoidrun(){
//調用HTML中的javaScript函數
mWebView.loadUrl("javascript:showMsg()");
}
});
}
});
}
}
⑼ 在android中怎樣調用本地js文件里的方法並得到返回值
在android中調用本地js文件里的方法並得到返回值其方法如下: Android中內置了WebKit模塊,而該模塊的Java層視圖類就是WebView,所有需要使用Web瀏覽器功能的Android都需要創建該視圖類對象顯示和處理請求的網路資源。目前WebKit支持Http、Https、Ftp和JavaScript請求。下面是在Android中調用JavaScript方法以及如何在js中調用本地方法。 1、在Assets下放一個簡單的html文件jstest/apk/res/android" > <WebView android:id="@+id/wv_test" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@+id/btn_showmsg"/> <Button android:id="@+id/btn_showmsg" android:layout_width="200dip" android:layout_height="40dip" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:text="調用html中js方法"/> </RelativeLayout> 3、然後是Activity,MainActivity.java package com.harold.jstest; import com.harold.base.JSKit; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.view.View.OnClickListener; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.widget.Button; public class MainActivity extends Activity { private WebView mWebView; private Button btnShowInfo; private JSKit js; private Handler mHandler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //初始化控制項 mWebView = (WebView) findViewById(R.id.wv_test); btnShowInfo = (Button) findViewById(R.id.btn_showmsg); //實例化js對象 js = new JSKit(this); //設置參數 mWebView.getSettings().setBuiltInZoomControls(true); //內容的渲染需要webviewChromClient去實現,設置webviewChromClient基類,解決js中alert不彈出的問題和其他內容渲染問題 mWebView.setWebChromeClient(new WebChromeClient()); mWebView.getSettings().setJavaScriptEnabled(true); //把js綁定到全局的myjs上,myjs的作用域是全局的,初始化後可隨處使用 mWebView.addJavascriptInterface(js, "myjs"); mWebView.loadUrl("file:///android_asset/jstest.html"); btnShowInfo.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mHandler.post(new Runnable() { @Override public void run() { //調用 HTML 中的javaScript 函數 mWebView.loadUrl("javascript:showMsg()"); } }); } }); } } 4、最後是綁定全局js的類JSKit.java package com.harold.base; import android.widget.Toast; import com.harold.jstest.MainActivity; public class JSKit { private MainActivity ma; public JSKit(MainActivity context) { this.ma = context; } public void showMsg(String msg) { Toast.makeText(ma, msg, Toast.LENGTH_SHORT).show(); } } 例子比較簡單,代碼里都加了注釋,這里就不多說了,本示例用的本地的html,如果訪問網路中的網頁,別忘記在AndroidManifest.xml中加許可權 <uses-permission android:name="android.permission.INTERNET"/>
⑽ android代碼中webview如何調用JavaScript
mWebView.setWebChromeClient(new MyWebChromeClient()); mWebView.addJavascriptInterface(new Object(){ /** * 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()"); } }); } }, "demo"); 同理,在html中必須有一個名為demo的對象調用clickOnAndroid()方法。 /** * 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) { result.confirm(); return super.onJsAlert(view, url, message, result); } }