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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 自定义WebView弹窗及屏蔽弹窗

發(fā)布時間:2023/12/10 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 自定义WebView弹窗及屏蔽弹窗 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

額,還是那個WebView的問題,內(nèi)核已換成騰訊X5內(nèi)核,所以接下來的內(nèi)容會有一些X5內(nèi)核的方法。但我們的H5是不能改的,還是只有委屈我們自己。先看看H5自帶的彈窗

這樣子的彈窗在不同的手機上呈現(xiàn)的可能是不同的效果,效果不統(tǒng)一,你家產(chǎn)品經(jīng)理看了會高興嗎?哈哈哈。 其中,onJsPrompt彈出的內(nèi)容在我們現(xiàn)在的項目上是無意義的。這個是之前AngularJS和Cordava項目。于是乎,對于onJsPrompt彈窗,我的做法是:

@Overridepublic boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {//在defaultValue或message中,會返回一個url,我們項目中的下載的文件都是File路徑下//如果不是File文件,則直接返回true來屏蔽彈窗。if (!defaultValue.contains("File") && !message.contains("File")) {result.confirm();return true;}result.confirm();webView.loadUrl(message);return true;} 復(fù)制代碼

result.confirm();就是默認點確定,同理result.cancel();是取消操作

這樣就可以輕松地屏蔽gay_init:2這樣的無意義彈窗了,具體的可以根據(jù)message或者defaultValue的值來判斷是否執(zhí)行其他操作。 接下來是onJsAlert和onJsConfirm類型的,這樣的彈窗我可是一眼就辨別出來了,因為從按鍵個數(shù)基本確定,onJsAlert只有一個,onJsConfirm嘛,肯定是有一個取消一個確定了。如果不能確定類型,可以分別復(fù)寫幾個方法,打上斷點或者Log一下,也可以找到。

既然他倆就一個按鍵的區(qū)別,那就只貼onJsConfirm的了。樣式是仿照IOS的效果來的,background自定義的,需要的留言,我只貼主要的,畢竟本文主要是講WebView的。

xml文件:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"><TextViewandroid:id="@+id/title"android:layout_width="match_parent"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/content"android:layout_width="match_parent"android:layout_height="wrap_content" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><Buttonandroid:id="@+id/certain"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="確定" /><Buttonandroid:id="@+id/cancel"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginLeft="@dimen/x1"android:layout_weight="1"android:text="取消"/></LinearLayout> </LinearLayout> 復(fù)制代碼

類里面:

private AlertDialog confirmDialog;private boolean isCertain;@Overridepublic boolean onJsConfirm(WebView webView, String url, String message, final JsResult result) {confirmDialog = new AlertDialog.Builder(getContext(), R.style.alert_dialog_style).create();View view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.window_user, null);TextView title = (TextView) view.findViewById(R.id.title);TextView content = (TextView) view.findViewById(R.id.content);Button cancel = (Button) view.findViewById(R.id.cancel);Button certain = (Button) view.findViewById(R.id.certain);title.setText("操作提示");//直接將返回的message信息設(shè)置到布局中content.setText("" + message);confirmDialog.setView(view);cancel.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {confirmDialog.dismiss();isCertain = false;}});certain.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {confirmDialog.dismiss();isCertain = true;}});confirmDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {@Overridepublic void onDismiss(DialogInterface dialog) {//根據(jù)isCertain來判斷用戶希望執(zhí)行的是確定還是取消操作if (isCertain) {result.confirm();} else {result.cancel();}}});confirmDialog.show();WindowManager.LayoutParams params = confirmDialog.getWindow().getAttributes();params.width = (int) (ScreenUtils.getScreenWidth() * 0.9);params.height = LinearLayout.LayoutParams.WRAP_CONTENT;confirmDialog.getWindow().setAttributes(params);return true;} 復(fù)制代碼

效果嘛,就這樣啦。

一直以來,WebView對我來說是一個很難控制但是又不得不用的重要組件。經(jīng)歷了很多坑,包括谷歌大佬埋下的。不管怎么說,我們在遇到問題的時候,要不畏艱難,迎難而上。沒有問題,制造問題,也要上。不要慫,就是干!共勉。

轉(zhuǎn)載于:https://juejin.im/post/5a313cdc51882575cb741bd5

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的Android 自定义WebView弹窗及屏蔽弹窗的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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