1. 程式人生 > >Android webview監聽網頁對話方塊點選事件

Android webview監聽網頁對話方塊點選事件

android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli

現在專案遇到這樣一個問題,HTML5網頁彈出一個Alert對話方塊,該文章已經被刪除,Android這邊需要監聽使用者點選確定按鈕,然後返回前一個列表頁面進行頁面重新整理刪除被後臺刪除的的資料,具體做法如下

       setting.setJavaScriptEnabled(true);//支援js
setting.setJavaScriptCanOpenWindowsAutomatically(true);
        webview.setWebChromeClient(new WebChromeClient() {

            @Override
            public boolean onJsAlert(WebView view, String url, String message,
                                     final JsResult result) {
                Log.i("aaa", "onJsConfirm" + "," + "url: " + url);
                AlertDialog.Builder builder = new AlertDialog.Builder(ArticalDetailAct.this);
                builder.setMessage(message)
                        .setNeutralButton("確定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface arg0, int arg1) {
                                arg0.dismiss();
                                finish();
                            }
                        }).show();
                result.cancel();
                return true;
            }

            @Override
            public boolean onJsConfirm(WebView view, String url,
                                       String message, final JsResult result) {
                // TODO Auto-generated method stub
                Log.i("aaa", "onJsConfirm" + "," + "url: " + url);
//
//                DialogUtils.dialogBuilder(mContext, "溫馨提示", message,
//                        new DialogCallBack() {
//
//                            @Override
//                            public void onCompate() {
//                                Log.i(TAG, "onJsConfirm,onCompate");
//                                result.confirm();
//                            }
//
//                            @Override
//                            public void onCancel() {
//                                Log.i(TAG, "onJsConfirm,onCancel");
//                                result.cancel();
//                            }
//                        });
                return true;
            }
        });

如果大家出現如下問題android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli

導致報這個錯是在於new AlertDialog.Builder(mcontext),雖然這裡的引數是AlertDialog.Builder(Context context)但我們不能使用getApplicationContext()獲得的Context,而必須使用Activity,因為只有一個Activity才能新增一個窗體。 
解決方法:將new AlertDialog.Builder(Context context)中的引數用Activity.this(Activity是你的Activity的名稱)來填充就可以正確的建立一個Dialog了。 
 

相關推薦

Android webview網頁對話方塊事件

android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli 現在專案遇到這樣一個問題,HTML5網頁彈出一個Alert對話方塊,該文

Android開發20——單個監聽器多個按鈕事件

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

MFC C++網頁視窗的超連結跳轉問題(即開啟新的瀏覽器視窗)

使用MFC的CHtmlView類,註冊ON_EVENT事件進行監聽。 實現的基本程式碼是: BEGIN_EVENTSINK_MAP(CxxxView, CHtmlView)ON_EVENT(CxxxView, AFX_IDW_PANE_FIRST, DISPID_NEWWI

安卓實現任意控制元件view可拖拽,並拖拽和事件,可自動拉回螢幕邊緣

因為專案中有需要實現控制元件可任意拖拽的需求,所以簡單寫了個自定義OnTouchListener,以作拋磚引玉,歡迎大家提議反饋。 完整實現類如下,程式碼中有詳細註釋: 使用者可以決定是否開啟自動拖拽邊緣功能,可以監聽控制元件的拖拽和點選事件 public cl

Android 解析RecyclerView(1)——帶事件的通用Adapter

按照最原始的做法,構建一個RecyclerView Adapter需要寫挺多程式碼的,而通過對Java泛型的使用,可以使程式碼量變得只需十幾行即可。此外,由於RecyclerView不像ListView那樣支援直接新增頂部View,也不支援直接新增點選事件監

ListView滑動和設置事件

image null ram protected item import idle 滾動 pri viewholder_item.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout

Android如何藍芽耳機的按鍵事件

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

ionic 頁面滾動,停止滾動

原文出處:https://www.cnblogs.com/lee-xiumei/p/7449021.html 類似今日頭條,頁面上有很多card,點選每個card跳轉該card的詳情頁面。這裡有一個問題,當我滾動頁面時,會先後觸發touchstart、touchmove、touchend,但是當

解決label時,label內input執行兩次的bug

   有的時候,我們需要監聽label點選事件和input點選事件,如下所示:          <label id="checkbox"  data-role="checkbox">  <input id="storepwd"  type="checkb

android WebView呼叫檔案管理器,返回鍵退出app的解決辦法

在清單檔案中,給含有該WebView的activity設定屬性: alwaysRetainTaskState屬性 和 configChanges屬性 這裡,我的是WebActivity: <activity android:name=".activity.We

Android listview子控制元件的的事件(轉)

1.先看圖,是否是你想要的   2.佈局檔案<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" androi

Android完美處理RecyclerView實現item條目事件處理

前言: RecyclerView並沒有像ListView那樣提供了OnItemClick,OnItemLongClick等事件回撥介面,所以,我們需要自己寫介面去進行實現。 正題 ①、建立介面類OnRecyclerViewClickListener /** * Recy

Android Toolbar遮擋按鈕(view)事件,怎麼穿透呢

今天有朋友問我這個問題,我找到一個可行的方案,給大家分享一下 toolbar.setOnTouchListener(new View.OnTouchListener() { @Override public boolean

android FrameLayout響應了下層view的事件

解決方法  設定clickable為true <FrameLayout <span style="background-color: rgb(255, 0, 0);">android:clickable="true"</s

android popupwindow中使用ListView無法響應事件

在PopupWindow中使用ListView, 但是ListView中的各個item無法響應事件(如:ListView可以滑動,但是item無法點選),這是需要新增  mPopupwindow.se

Android通過程式碼模擬物理、螢幕事件

本文講的是通過使用程式碼,可以控制手機的螢幕和物理按鍵,也就是說不只是在某一個APP裡去操作,而是整個手機系統。 getevent/sendevent getevent&sendevent 是android系統下的一個工具,可以模擬多種按鍵和觸屏操作,產生的是

Android那些事》——ListView中Button事件解決方案

    說一說寫這篇文章的原因,最近在做一個專案,有涉及到使用者回覆的功能     遇到的其中一個問題就是,如何為ListView中的Button設定點選事件?     在此將解決方案分享給大家

Android設定TextView部分文字變色及事件

首先要想實現文字變色以及點選,都需要使用到SpannableStringBuilder,例項化該類也很簡單,只需將你想要處理的字串當做引數 SpannableStringBuilder spannable = new SpannableStringBuilder(conte

Android-listview新增控制元件導致listview事件失效

今天寫了個demo,dialog自定義佈局添加了個listview,listview  item裡面加了個checkBox,需求checkBox在列表裡有單選的效果:測試的時候需要點選item也改變checkBox的選中狀態,然而listview的點選事件失效了。後來發現是失

Android中web view擷取H5的事件

有時候我們需要做一些非常奇怪的功能,比如說h5頁面點選某個按鈕時,需要我們在手機端展示一些頁面,或者渲染h5返回的資料。 web view中shouldOverrideUrlLoading便是截獲h5