當前位置:編程學習大全網 - 源碼下載 - 如何設置WebView支持js的提醒、確認、提示功能的彈出提示框?

如何設置WebView支持js的提醒、確認、提示功能的彈出提示框?

Android WebView默認不支持js的alert()、confirm()和prompt()函數的彈出提示框。即使設置了setJavaScriptEnabled(true );也沒用。那麽,WebView如何支持js的這三個功能呢?可以通過設置WebChromeClient對象來實現。WebChromeClient主要輔助WebView處理Javascript對話框、網站圖標、網站標題、加載進度等。

以下是重寫WebChromeClient的三種方法:

OnJsAlert:警告框(WebView上的警告無效,需要自定義WebChromeClient才能彈出)。

OnJsPrompt:提示框。

OnJsConfirm: OK框。

效果圖如下:

1.警報

2.提示

3.確認

我們先來看看js頁面代碼:

& lthtml & gt

& lthead & gt

& ltmeta . example . chenys . webview demo;

導入Android . app . activity;

導入Android . app . alert dialog;

導入Android . content . dialog interface;

導入Android . OS . bundle;

導入Android . view . view;

導入Android . WebKit . jsprompt result;

導入Android . WebKit . js result;

導入Android . WebKit . web chrome client;

導入Android . WebKit . web settings;

導入Android . WebKit . webview;

導入Android . widget . edittext;

導入Android . widget . textview;

/**

*由mChenys於2015/11/19創建。

*/

公共類TestAlertActivity擴展Activity {

@覆蓋

受保護的void onCreate(Bundle saved instancestate){

super . oncreate(savedInstanceState);

WebView webView = new WebView(這個);

setContentView(webView);

webview . request focus();

web settings settings = webview . get settings();

settings . setjavascript enabled(true);//啟用js支持

//設置Alert()函數響應js。

webview . setwebchromeclient(new WebChromeClient(){

@覆蓋

public boolean onJsAlert(WebView視圖,字符串url,字符串消息,最終JsResult結果){

警報對話框。生成器b =新警報對話框。構建器(testalertactivity . this);

b . settitle(" Alert ");

b.setMessage(消息);

b.setPositiveButton(安卓。R.string.ok,新建DialogInterface。OnClickListener() {

@覆蓋

public void onClick(dialog interface dialog,int which) {

result.confirm()。

}

});

b . setcancelable(false);

b.create()。show();

返回true

}

//設置響應js的Confirm()函數。

@覆蓋

public boolean onJsConfirm(WebView視圖,字符串url,字符串消息,最終JsResult結果){

警報對話框。生成器b =新警報對話框。構建器(testalertactivity . this);

b.setTitle(“確認”);

b.setMessage(消息);

b.setPositiveButton(安卓。R.string.ok,新建DialogInterface。OnClickListener() {

@覆蓋

public void onClick(dialog interface dialog,int which) {

result.confirm()。

}

});

b.setNegativeButton(安卓。R.string.cancel,new DialogInterface。OnClickListener() {

@覆蓋

public void onClick(dialog interface dialog,int which) {

result . cancel();

}

});

b.create()。show();

返回true

}

//設置Prompt()函數響應js。

@覆蓋

public boolean onJsPrompt(WebView視圖,字符串url,字符串消息,字符串defaultValue,最終jspromptsultresult結果){

最終視圖v = View . inflate(testalertactivity . this,R.layout.prompt_dialog,null);

((TextView)v . findviewbyid(r . id . prompt _ message _ text))。setText(消息);

((EditText)v . findviewbyid(r . id . prompt _ input _ field))。setText(默認值);

警報對話框。生成器b =新警報對話框。構建器(testalertactivity . this);

b.setTitle(“提示”);

b . set view(v);

b.setPositiveButton(安卓。R.string.ok,新建DialogInterface。OnClickListener() {

@覆蓋

public void onClick(dialog interface dialog,int which) {

字符串值=((EditText)v . findviewbyid(r . id . prompt _ input _ field))。getText()。toString();

結果確認(值);

}

});

b.setNegativeButton(安卓。R.string.cancel,new DialogInterface。OnClickListener() {

@覆蓋

public void onClick(dialog interface dialog,int which) {

result . cancel();

}

});

b.create()。show();

返回true

}

});

webview . loadurl(" file:///Android _ asset/index 3 . html ");

}

}

有兩件事需要註意:

1.要重寫onJsPrompt方法,我們需要定制壹個提示布局文件,如下所示:prompt_dialog.xml

只是壹個提示TextView和壹個輸入文本EditTex。

[html]查看純文本

& lt?xml版本="1.0 "編碼="utf-8 "?& gt

& ltLinearLayout xmlns:android= " "

Android:layout _ width = " match _ parent "

Android:layout _ height = " match _ parent "

Android:orientation = " vertical " & gt;

& lt文本視圖

Android:id = " @+id/prompt _ message _ text "

Android:layout _ width = " match _ parent "

Android:layout _ height = " wrap _ content "/& gt;

& lt編輯文本

Android:id = " @+id/prompt _ input _ field "

Android:layout _ width = " match _ parent "

Android:layout _ height = " wrap _ content "

android:minWidth="250dp "

android:selectAllOnFocus="true "

Android:scroll horizontally = " true "/& gt;

& lt/linear layout & gt;

2.如果2。WebView需要支持js,記得加js支持。

web settings settings = webview . get settings();

settings . setjavascript enabled(true);

  • 上一篇:手寫源代碼制作
  • 下一篇:北京哪個軟件開發公司比較好?
  • copyright 2024編程學習大全網