Android與Javascript互動樣本(三)

來源:互聯網
上載者:User

MainAcivity如下:

package cn.testjavascriptdialog;import android.os.Bundle;import android.app.Activity;import android.app.AlertDialog;import android.app.AlertDialog.Builder;import android.app.Dialog;import android.content.DialogInterface;import android.content.DialogInterface.OnClickListener;import android.view.LayoutInflater;import android.view.View;import android.webkit.JsPromptResult;import android.webkit.JsResult;import android.webkit.WebChromeClient;import android.webkit.WebView;import android.widget.EditText;/** * Demo描述: * 測試Android響應Javascript的三種對話方塊 *  * 參考資料: * http://www.cnblogs.com/luckjun/archive/2013/03/22/2976117.html */public class MainActivity extends Activity { private WebView mWebView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);init();}private void init(){mWebView=(WebView) findViewById(R.id.webView);initWebViewSettings();// 為WebView設定WebChromeClientmWebView.setWebChromeClient(new WebChromeClientSubClass());//載入本地Html檔案mWebView.loadUrl("file:///android_asset/test.html");}private void initWebViewSettings(){mWebView.setVerticalScrollBarEnabled(false);mWebView.setHorizontalScrollBarEnabled(false);mWebView.getSettings().setJavaScriptEnabled(true);mWebView.getSettings().setSupportZoom(true);mWebView.getSettings().setDomStorageEnabled(true);mWebView.getSettings().setPluginsEnabled(true);mWebView.requestFocus();mWebView.getSettings().setUseWideViewPort(true);mWebView.getSettings().setLoadWithOverviewMode(true);mWebView.getSettings().setSupportZoom(true);mWebView.getSettings().setBuiltInZoomControls(true);}private class WebChromeClientSubClass extends WebChromeClient{@Overridepublic boolean onJsAlert(WebView view, String url, String message,final JsResult result) {Dialog alertDialog=null;AlertDialog.Builder builder=new Builder(MainActivity.this);builder.setTitle("Javascript的alert對話方塊");builder.setMessage(message);builder.setNegativeButton("OK", new OnClickListener() {@Overridepublic void onClick(DialogInterface arg0, int arg1) {System.out.println("現在顯示的是Javascript的alert對話方塊");//注意://必須要這一句代碼:result.confirm()表示://處理結果為確定狀態同時喚醒WebCore線程 //否則不能繼續點擊按鈕result.confirm();}});alertDialog=builder.create();alertDialog.show();return true;}@Overridepublic boolean onJsConfirm(WebView view, String url, String message,final JsResult result) {Dialog confirmDialog=null;AlertDialog.Builder builder=new Builder(MainActivity.this);builder.setTitle("Javascript的confirm對話方塊");builder.setMessage(message);builder.setPositiveButton("OK", new OnClickListener() {@Overridepublic void onClick(DialogInterface arg0, int arg1) {System.out.println("現在點擊的是Javascript的confirm對話方塊的OK");//處理結果為確定狀態同時喚醒WebCore線程 result.confirm();}});builder.setNegativeButton("NO", new OnClickListener() {@Overridepublic void onClick(DialogInterface arg0, int arg1) {System.out.println("現在點擊的是Javascript的confirm對話方塊的NO");//處理結果為取消狀態同時喚醒WebCore線程 result.cancel();}});confirmDialog=builder.create();confirmDialog.show();return true;}@Overridepublic boolean onJsPrompt(WebView view, String url, String message,String defaultValue, final JsPromptResult result) { LayoutInflater inflater = getLayoutInflater();              View promptView = inflater.inflate(R.layout.prompt, null);              final EditText nameEditText = (EditText) promptView.findViewById(R.id.nameEditText);              nameEditText.setHint("請輸入您的名字");                            Dialog promptDialog=null; AlertDialog.Builder builder=new Builder(MainActivity.this); builder.setView(promptView); builder.setTitle("Javascript的prompt對話方塊"); builder.setPositiveButton("OK", new OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { System.out.println("現在點擊的是Javascript的prompt對話方塊的OK"); //處理結果為取消狀態且喚醒WebCore線程  //同時彈出alert對話方塊提示使用者 result.confirm(nameEditText.getText().toString()); } }); builder.setNegativeButton("NO", new OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { System.out.println("現在點擊的是Javascript的prompt對話方塊的NO"); //處理結果為取消狀態同時喚醒WebCore線程  result.cancel(); } }); promptDialog=builder.create(); promptDialog.show();            return true; }}}

main.xml如下:

<RelativeLayout     xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    >    <TextView        android:id="@+id/textView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="測試Android響應Javascript的三種對話方塊"        android:layout_centerHorizontal="true"     />    <WebView         android:id="@+id/webView"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:layout_below="@id/textView"        /></RelativeLayout>

 

prompt.xml如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout     xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="wrap_content"    android:layout_height="wrap_content" >    <EditText        android:id="@+id/nameEditText"        android:layout_width="fill_parent"        android:layout_height="wrap_content"     /></LinearLayout>

test.html如下:

        <html>     <head>         <script type="text/javascript">             function doAlert() {                 alert("hello!");             }                    function doConfirm() {                 confirm("are you sure?");             }                    function doPrompt() {                 var val = prompt("what's your name?");                 if (val) {                     alert("your name is:" + val);                 }             }                                      function success(msg) {                 alert(msg);             }         </script>     </head>     <body background="black">         <br>        <br>        <input type="button" value="alert" onclick="doAlert()"/><br/>         <br>        <br>        <input type="button" value="confirm" onclick="doConfirm()"/><br/>         <br>        <br>        <input type="button" value="prompt" onclick="doPrompt()"/><br/>         <br>        <br>                <div id="result"></div>     </body> </html> 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.