android webviewのjs alert処理

1913 ワード

Webviewを書き始めた学生は、jsのalert、confrim、promptなどの弾窓がh 5ページに含まれている場合、実行時にこれらの弾窓は無効になるという問題に直面したことがあるかもしれません.焦らないでandroidは私たちのためにインタフェースを残して、これらの弾窓を書き直してくれました.
まず、webviewという比較基盤を定義する必要があります.ここではあまり言いません.次に、setWebViewClientメソッドを呼び出し、javascriptの有効化を設定する必要があります.
		webview.setWebViewClient(new WebViewClient(){


			@Override
			public boolean shouldOverrideUrlLoading(WebView view, String url) {
				
				view.loadUrl(url);
				
				view.getSettings().setJavaScriptEnabled(true);
				
				view.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
				
				return true;
			}
			
		});

ポイントはalert、confrim、promptなどの弾窓を書き直す必要があります
		webview.setWebChromeClient(new WebChromeClient() {

			@Override
			public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
				
				AlertDialog.Builder b2 = new AlertDialog.Builder(MainActivity.this)
						.setTitle("  ").setMessage(message)
						.setPositiveButton("ok",
							new AlertDialog.OnClickListener() {
		
								@Override
								public void onClick(DialogInterface dialog, int which) {
									// TODO Auto-generated method stub
									result.confirm();
								}
							});

				b2.setCancelable(false);
				b2.create();
				b2.show();
				return true;
			}

			@Override
			public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
				// TODO Auto-generated method stub
				return super.onJsConfirm(view, url, message, result);
			}

			@Override
			public boolean onJsPrompt(WebView view, String url, String message, String defaultValue,
					JsPromptResult result) {
				// TODO Auto-generated method stub
				return super.onJsPrompt(view, url, message, defaultValue, result);
			}
		}

このコードを書き終わったら仕事が終わる