您好,很高興能幫助您, 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, 即可實現調用 你的采納是我前進的動力,還有不懂的地方,請你繼續“追問”! 如你還有別的問題,可另外向我求助;答題不易,互相理解,互相幫助!
商南網站制作公司哪家好,找創新互聯!從網頁設計、網站建設、微信開發、APP開發、響應式網站等網站項目制作,到程序開發,運營維護。創新互聯2013年至今到現在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選創新互聯。
Android之如何使用javascript調用android代碼
使用javascript調用android代碼
1.使用webview對象的addJavascriptInterface方法
2.addJavascriptInterface方法有兩個參數,第一個參數就是我們一般會實現一個自己的類,類里面提供我們要提供給javascript訪問的方法;第二個參數是訪問我們在obj中聲明的方法時候所用到的js對象,調用模式為window.interfaceName.方法名()或者是javascript: interfaceName.方法名() ;,如myWebView.addJavascriptInterface(new JavaScriptinterface(this), "android");
3.編寫JavaScriptinterface類,如有一個函數名為showToast()的方法
4.在html中調用時的形式:javascript:android.showToast()。
附上一個小例子:
import android.content.Context;
import android.widget.Toast;
public class JavaScriptinterface {
private Context mContext;
/** Instantiate the interface and set the context */
public JavaScriptinterface(Context c) {
mContext = c;
}
/** Show a toast from the web page */
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
private WebView myWebView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myWebView = (WebView) findViewById(R.id.myWebView);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.addJavascriptInterface(new JavaScriptinterface(this),
"android");
String htmlText = getFromAssets("test.html");
//把myWebView加載html
myWebView.loadData(htmlText, "text/html", "utf-8");
myWebView.setWebViewClient(new myWebViewClient());
}
// 此按鍵監聽的是返回鍵,能夠返回到上一個網頁(通過網頁的hostlistery)
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) myWebView.canGoBack()) {
myWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
public String getFromAssets(String fileName) {
try {
InputStreamReader inputReader = new InputStreamReader(
getResources().getAssets().open(fileName));
BufferedReader bufReader = new BufferedReader(inputReader);
String line = "";
String Result = "";
while ((line = bufReader.readLine()) != null)
Result += line;
if (bufReader != null)
bufReader.close();
if (inputReader != null)
inputReader.close();
return Result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
class myWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
return true;
}
}
}
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""
html xmlns="" xml:lang="zh-CN" dir="ltr"
head
meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /
script type="text/javascript"
function showAndroidToast(toast) {
javascript:android.showToast(toast);
}
/script
/head
body
input type="button" value="Say hello"
onClick="showAndroidToast('Hello Android!')" /
/body
/html
android的應用程序中,可以直接調用WebView 中的javascript 代碼:
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
public class MainActivity02 extends Activity {
/** Called when the activity is first created. */
private WebView webView;
private Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
webView=(WebView) this.findViewById(R.id.webView);
button=(Button) this.findViewById(R.id.button);
WebSettings setting=webView.getSettings();
//設置支持javascript
setting.setJavaScriptEnabled(true);
//增加接口方法,讓html頁面調用
webView.addJavascriptInterface(new Object(){
//這里我定義了一個撥打的方法
public void startPhone(String num){
Intent intent=new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+num));
startActivity(intent);
}
}, "demo");
//加載頁面
webView.loadUrl("");
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
webView.loadUrl("javascript:show('activity傳過來的數據')"); //調用javascript函數
/*
* 通過webView.loadUrl("javascript:xxx")方式就可以調用當前網頁中的名稱
* 為xxx的javascript方法
*/
}
});
}
}
!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ""
html
head
meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
titleInsert title here/title
script type="text/javascript"
function show(content){
document.getElementById("countent").innerHTML=
"這是我的javascript調用. 這是:"+content;
}
/script
/head
body
table align="center"
trtd姓名/tdtd電話/td/tr
trtd小明/tdtda href="javascript:demo.startPhone(123)"123/a/td/tr
trtd小王/tdtda href="javascript:demo.startPhone(456)"456/a/td/tr
/table
p id="countent"html原始數據/p
/body
/html
一般是瀏覽器里禁用,進入瀏覽器設置找到隱私或高級或擴展功能,再找到js并開啟即可。具體要看是哪個瀏覽器里提示,不同瀏覽器操作也略有不同。
現在的安卓手機的瀏覽器幾乎都是可以直接瀏覽普通網頁(非WAP網頁)的,而且都是支持Javascript的(事實上Javascript已經是目前為止唯一的網頁前端腳本語言了)。當然,瀏覽器中一般都有打開或關閉Javascript功能的選項,但只要是打開的,你用alert彈出的對話框就一定會彈出來,除非有錯。
本文題目:安卓javascript,安卓JavaScript
網頁網址:http://vcdvsql.cn/article16/dsdiggg.html
成都網站建設公司_創新互聯,為您提供自適應網站、品牌網站建設、響應式網站、外貿網站建設、手機網站建設、小程序開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯