日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android加载网页JavaScript与Java之间的相互调用

發(fā)布時間:2024/1/18 Android 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android加载网页JavaScript与Java之间的相互调用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

???? 最近項目中涉及到Android中的網(wǎng)絡通信與交互、html5等相關內(nèi)容,由于之前沒仔細研究過,在這里總結(jié)一下,下面是JavaScript與Java相互調(diào)用的一個小例子,廢話不多說,直接上代碼:

<html> <meta http-equiv="Content-Type" content="text/html;charset=GBK"><head> <script type="text/javascript">function ok() {window.player.playOk();}function wrong() {window.player.playWrong();}function show_alert() {alert("這是一個警告!")}function show_confirm() {var v = confirm("確定你是個好人?")if (v == true) {alert("你選擇了是!");} else {alert("你選擇了否!");}}function disp_prompt() {var name = prompt("請輸入您的名字", "Jerome")if (name != null && name != "") {document.getElementById("content").innerHTML = "你好!" + name;}}function java_call() {document.getElementById("content").innerHTML = "Java代碼調(diào)用你了";} </script> </head> <body><input type="button" οnclick="ok()" value="OK" /><br /><input type="button" οnclick="wrong()" value="Warning"><br /><input type="button" οnclick="show_alert()" value="警告"><br /><input type="button" οnclick="show_confirm()" value="刪除"><br /><input type="button" οnclick="disp_prompt()" value="顯示提示框" /><br /><p id="content"></p> </body> </html>

這是html的代碼,不接觸web前段,js都不怎么會寫了,簡單的函數(shù)湊合用了,嘿嘿。

package com.example.jsjava;import java.io.IOException;import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.res.AssetFileDescriptor; import android.content.res.AssetManager; import android.media.MediaPlayer; import android.os.Bundle; import android.os.Handler; import android.webkit.JsPromptResult; import android.webkit.JsResult; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.widget.EditText;/*** * ClassName:MainActivity* * @author Jerome Song* @version* @since Ver 1.1* @Date 2013 2013-5-17 下午11:33:05* * @see*/ public class MainActivity extends Activity {private WebView webview = null;private MediaPlayer player;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);player = new MediaPlayer();initWebView();}private void initWebView() {webview = (WebView) super.findViewById(R.id.webview);webview.getSettings().setJavaScriptEnabled(true); // 啟用JavaScriptwebview.getSettings().setBuiltInZoomControls(true); // 控制頁面縮放webview.addJavascriptInterface(new PlayerMethod(), "player");// 添加Js函數(shù)調(diào)用接口webview.setWebChromeClient(new WebChromeClient() {@Override// 彈出警告框操作public boolean onJsAlert(WebView view, String url, String message,final JsResult result) {Dialog dialog = new AlertDialog.Builder(MainActivity.this).setMessage(message).setPositiveButton(android.R.string.ok,new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {result.cancel();// 這里我們通過Webview.loadUrl()方法去調(diào)用js中的函數(shù)webview.loadUrl("javascript:java_call()");}}).create();dialog.setCancelable(false);// 避免點Back取消,那樣js接收不到任何返回信息dialog.show();return true;}//@Override// 彈出確認框操作public boolean onJsConfirm(WebView view, String url,String message, final JsResult result) {Dialog dialog = new AlertDialog.Builder(MainActivity.this).setIcon(android.R.drawable.stat_sys_warning).setMessage(message).setPositiveButton("是",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {result.confirm();}}).setNegativeButton("否",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {result.cancel();}}).create();dialog.setCancelable(false);dialog.show();return true;}// 提示@Overridepublic boolean onJsPrompt(WebView view, String url, String message,String defaultValue, final JsPromptResult result) {final EditText text = new EditText(MainActivity.this);text.setHint(defaultValue);Dialog dialog = new AlertDialog.Builder(MainActivity.this).setTitle(message).setView(text).setPositiveButton("確定", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {result.confirm(text.getText().toString());}}).setNegativeButton("取消", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {result.cancel();}}).create();dialog.setCancelable(false);dialog.show();return true;}});webview.loadUrl("file:///android_asset/html/play_js.html");}class PlayerMethod {Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {try {if (msg.what == 1) {play("ok.mp3");} else {play("wrong.mp3");}} catch (IOException e) {e.printStackTrace();}};};AssetManager asm = getResources().getAssets();public void playOk() throws IllegalArgumentException,IllegalStateException, IOException {handler.sendEmptyMessage(1);}public void playWrong() throws IOException {handler.sendEmptyMessage(0);}private void play(String fileName) throws IOException {if (player.isPlaying()) {player.stop();}player.reset();AssetFileDescriptor afd = asm.openFd(fileName);player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(),afd.getLength());player.prepare();player.start();}}}


有不對的地方希望大家能給予批評指正,多多交流,謝謝。

源碼地址:http://download.csdn.net/detail/songzhiyong1121/5400403

總結(jié)

以上是生活随笔為你收集整理的Android加载网页JavaScript与Java之间的相互调用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。