package com.example.androidexam07;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Build;
import android.os.Bundle;
import android.os.Message;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
public class MainActivity extends Activity {
WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
// 가로 고정은 AndroidManifest.xml 에서 설정 할 것.
webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); // 캐쉬 사용 안함
webView.getSettings().setJavaScriptEnabled(true); // 자바스크립트 사용 여부
webView.getSettings().setSupportMultipleWindows(true); // 멀티플 윈도우
/*
* webView.getSettings().setSaveFormData(false); // 비밀번호저장 사용 안함
* webView.getSettings().setSavePassword(false); // 폼 데이터 저장(자동완성) 사용 안함
* webView.getSettings().setBuiltInZoomControls(false); // 멀티줌 사용 안함
* webView.getSettings().setSupportZoom(false); // 줌 사용 안함
*
* webView.setVerticalScrollBarEnabled(false); // 세로 스크롤바 사용 안함
* webView.setHorizontalScrollBarEnabled(false); // 가로 스크롤바 사용 안함
*/
webView.setWebViewClient(new webViewClient());
webView.setWebChromeClient(new webViewChromeClient());
webView.loadUrl("http://192.168.0.16/helloWeb/test.jsp");
}
/**
* 프로그램 종료시
* */
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
webView.clearCache(true); // 웹뷰 캐시 삭제
webView.destroy();
webView = null;
clearWebViewCache(null); // 웹뷰 캐시 삭제(전체)
android.os.Process.killProcess(android.os.Process.myPid()); // pid kill
}
/**
* 웹뷰 의 캐시 삭제
* */
private void clearWebViewCache(java.io.File dir){
if(dir == null){
dir = getCacheDir();
}
if(dir == null){
return;
}
java.io.File[] content = dir.listFiles();
try{
for(int i=0; i<content.length; i++){
if(content[i].isDirectory()){
clearWebViewCache(content[i]);
}else{
content[i].delete();
}
}
}catch(Exception e){
e.printStackTrace();
}
}
/**
* '뒤로가기' 하드웨어 버튼 눌렀을 경우
* */
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
if(webView.canGoBack()){
webView.goBack();
}else{
Toast.makeText(getBaseContext(), "프로그램을 종료 합니다.", Toast.LENGTH_SHORT).show();
super.onBackPressed();
}
}
/**
* WebViewClient 상속
* */
private class webViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
// return super.shouldOverrideUrlLoading(view, url);
view.loadUrl(url);
return true;
}
}
/**
* WebChromeClient 상속
* */
private class webViewChromeClient extends WebChromeClient {
@Override
public boolean onCreateWindow(WebView view, boolean dialog,
boolean userGesture, Message resultMsg) {
// TODO Auto-generated method stub
return super.onCreateWindow(view, dialog, userGesture, resultMsg);
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public boolean onJsAlert(WebView view, String url, String message,
final JsResult result) {
// TODO Auto-generated method stub
// return super.onJsAlert(view, url, message, result);
new AlertDialog.Builder(view.getContext(), AlertDialog.THEME_DEVICE_DEFAULT_LIGHT)
.setTitle("알림")
.setMessage(message)
.setPositiveButton(android.R.string.ok,
new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
result.confirm();
}
}).setCancelable(false).create().show();
return true;
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public boolean onJsConfirm(WebView view, String url, String message,
final JsResult result) {
// TODO Auto-generated method stub
// return super.onJsConfirm(view, url, message, result);
new AlertDialog.Builder(view.getContext(), AlertDialog.THEME_DEVICE_DEFAULT_LIGHT)
.setTitle("알림")
.setMessage(message)
.setPositiveButton("예",
new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
result.confirm();
}
})
.setNegativeButton("아니오",
new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
result.cancel();
}
}).setCancelable(false).create().show();
return true;
}
}
}
2013년 10월 29일 화요일
[AnDrOiD]WebChromeClient 에서 alert
피드 구독하기:
댓글
(Atom)
댓글 없음 :
댓글 쓰기