android WebView onJsAlert onJsConfirm

來源:互聯網
上載者:User

package com.html;

import com.sqlite.Dao.NcpRegisterDAO;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.widget.Toast;


public class Register_protocolActivity extends Activity {
  

    private Handler mHandler = new Handler();
    private WebView mWebView;
    private NcpRegisterDAO dao = null;
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        //踩上一腳,記錄有了就知道複位的時候要去哪裡
        dao = new NcpRegisterDAO(Register_protocolActivity.this);
        String name = "MainActivity";
        dao.add_Stepped(name);
        
        //隱藏標題列
        //requestWindowFeature(Window.FEATURE_NO_TITLE);
        //隱藏狀態列
        //getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        //該ACTIVITY不需要layout設定,所以直接指向MainActivity的main
        setContentView(R.layout.protocol);
        //將WebView執行個體化
        mWebView = (WebView) this.findViewById(R.id.webView);
        //WebView開啟許可權
        mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        mWebView.getSettings().setJavaScriptEnabled(true);
        //WebView,SWF檔案運行許可權
        mWebView.getSettings().setPluginsEnabled(true);


        mWebView.addJavascriptInterface(new Action(), "ncp");  
     
       mWebView.loadUrl("file:///android_asset/protocol.html");

       
          
          // 建立WebViewChromeClient
               WebChromeClient wvcc = new WebChromeClient() {             
          // 處理Alert事件
             
             public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
              // 構建一個Builder來顯示網頁中的alert對話方塊
                             Builder builder = new Builder(Register_protocolActivity.this);
                                 builder.setTitle("計算1+2的值");
                                 builder.setMessage(message);
                                 builder.setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() {
                                     @Override
                                     public void onClick(DialogInterface dialog, int which) {
                                         result.confirm();
                                     }
                                 });
                                builder.setCancelable(false);
                                 builder.create();
                                 builder.show();
                                 return true;
                             }
             
             
             // 處理Confirm事件
                     public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) {
                         Builder builder = new Builder(Register_protocolActivity.this);
                         builder.setTitle("退出確認");
                         builder.setMessage(message);
                         builder.setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() {
                             public void onClick(DialogInterface dialog, int which) {
                                 //result.confirm();
                                // 從協義開始到發送註冊資訊,這些步驟退出後直接清零複位表,不然如果非順利關機後再重啟會再次進入該頁
                                dao.Clear_NcpStep_Set0();
                                 finish();
                                 
                             }
         
                         });
                         builder.setNeutralButton(android.R.string.cancel, new AlertDialog.OnClickListener() {
         
                          public void onClick(DialogInterface dialog, int which) {
                                 result.cancel();
                             }
         
                         });
                         builder.setCancelable(false);
                         builder.create();
                         builder.show();
                         return true;
                     }
             
          };
       // 設定setWebChromeClient對象
          mWebView.setWebChromeClient(wvcc);
       
       
       
    }
    
    final class Action {  
        
        Action() {  
        }  
         
        public void clickOnAndroid_register() {  
           mHandler.post(new Runnable() {  
                public void run() {  
                   // mWebView.loadUrl("javascript:wave()");            
                    Toast.makeText(getBaseContext(), "歡迎進入註冊!", Toast.LENGTH_SHORT).show();
                    //Intent intent = new Intent(MainActivity.this,Register.class);
                    Intent intent = new Intent(Register_protocolActivity.this,Register_IDcard.class);
                    Register_protocolActivity.this.startActivity(intent);
                      //設定切換動畫,從右邊進入,左邊退出
                    overridePendingTransition(R.xml.in_from_right, R.xml.out_to_left);
                    
                }  
            });  
        }   
        
        
        public void clickOnAndroid_quit() {  
            mHandler.post(new Runnable() {  
                 public void run() {  
                     finish();
                 }  
             });  
         }
    } 

     //禁止回退
    public void onBackPressed() {
               // TODO Auto-generated method stub
               return;
               //super.onBackPressed();
    }
    
    @Override
    protected void onStop() {
        super.onStop();
        System.out.println("onStop!!");
        finish();
        // The activity is no longer visible (it is now "stopped")
    }

}

 

分享到: 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.