android webview 는 js 의 alert, confirm, prompt 를 가 져 오고 값 을 가 져 옵 니 다.

설명:
개발 중 에 prompt 를 통 해 값 을 전달 해 야 하 는 상황 을 만 났 습 니 다.즉, prompt 팝 업 상자 의 값 을 캡 처 하여 원생 에 표시 하지만 prompt 상 자 는 팝 업 되 지 않 습 니 다.
코드:
STEP 1: 원생 호출 js 코드
 
private WebView webView;
webView.loadUrl("javascript:getParams()");
 
 
제2 부: 웹 페이지 js 탄창
 
function getParams() {
	window.prompt("  ");
}
 
 
제3 부: 원생 차단 탄 틀, 탄 틀 금지 및 대응 하 는 값 획득
 
private void init webView() {	
		webView = new WebView(context);
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);//      js
        webView.setWebChromeClient(new WebChromeClient() {//   alert   
            @Override
            public void onReceivedTitle(WebView view, String title) {
                super.onReceivedTitle(view, title);
                webTitle = title;
            }

            /**     
			 *   alert        
			 */       
			@Override       
			public boolean onJsAlert(WebView view,String url,        
									 String message,JsResult result) {        
				Log.d(LOG_TAG,"onJsAlert:"+message);        
			  //  mReusultText.setText("Alert:"+message);        
			  /*  // alert            
				new AlertDialog.Builder(PhoneTest.this).       
					setTitle("Alert").setMessage(message).setPositiveButton("OK",       
					new DialogInterface.OnClickListener() {       
						@Override      
						public void onClick(DialogInterface arg0, int arg1) {       
						   //TODO       
					   }       
				}).create().show();       
				*/  
				result.confirm();        
				return super.onJsConfirm(view,url,message, result);        
			}        
		   
			/**     
			 *   confirm        
			 */       
			@Override       
			public boolean onJsConfirm(WebView view, String url, String message,        
					JsResult result) {        
				Log.d(LOG_TAG, "onJsConfirm:"+message);        
				mReusultText.setText("Confirm:"+message); //           ,       
				// confirm             
				new AlertDialog.Builder(PhoneTest.this).        
					setTitle("Confirm").setMessage(message).setPositiveButton("OK",        
					new DialogInterface.OnClickListener() {        
						@Override       
						public void onClick(DialogInterface arg0, int arg1) {        
						   //TODO        
					   }        
				}).create().show();    
				result.confirm();        
				return true;  
				//                   ,         
				//return super.onJsConfirm(view, url, message, result);        
			}        
		   
			/**     
			 *   prompt        
			 */       
			@Override       
			public boolean onJsPrompt(WebView view, String url, String message,        
					String defaultValue, JsPromptResult result) {        
				Log.d(LOG_TAG,"onJsPrompt:"+message);        
				mReusultText.setText("Prompt input is :"+message);        
				result.confirm();        
				return super.onJsPrompt(view, url, message, message, result);        
			}        
    
		});
}    
 
 
설명:
result. confirm () 은 return true 와 함께 사용 해 야 탄 상자 가 나타 나 지 않 습 니 다.

좋은 웹페이지 즐겨찾기