본문 바로가기

개발도구/aOS - 안드로이드 개발

[안드로이드] javascript 처리하고 alert창이 나오도록, close 되어 있을때 finish 되도록

아래 소스는 이벤트를 걸어 놓기 위한 소스이다. 
예를들어 아이폰, 안드로이드 동시에 html 파일을 만들어 놓고
이벤트성을 그 페이지에 계속 넣기 위해 사용된다. 
** 어플 특성상 업뎃 되었다고 계속 페이지를 수정할수 없는 노릇이기 때문에..


xxx.php
 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=euc_kr" /> 
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no" /> 
<link rel="apple-touch-icon" href="http://menu.mt.co.kr/mobile/images/Icon3.png" /> 
<title>Test</title> 
</head> 
 
<body> 
<div id="wrap"> 
<div id="container"> 
<div class="event_box"> 
<script language="JavaScript">
<!--
alert('이벤트 준비중입니다');
location.href='toApp://close';
//-->
</script>
</div> 
</div> 
</div> 
</body> 
</html> 
 

.class 

public class StarEvent extends Activity {
WebView mWebView;
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.starevent);
    //  setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//화면가로모드
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // 세로 유지
   
    String link = "http://.... .. ... ..Event.html";
    final WebView browser = (WebView)findViewById(R.id.webview); 
    browser.getSettings().setJavaScriptEnabled(true);  //javascript 사용 가능하게 한다
    final Context myApp = this;

    browser.setWebChromeClient(new WebChromeClient() {
       @Override
       public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result)
       {
           new AlertDialog.Builder(myApp)
               .setTitle("StarNews Event")
               .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;
       };
    });

   
browser.setWebViewClient(new WebViewClient() {  
     
    @Override
        public boolean shouldOverrideUrlLoading(WebView view, String overrideUrl) {
       
    view.stopLoading();
   
        //Log.d("test", overrideUrl);
       
         
        if(overrideUrl.contains("close")) {
       
        finish(); // html 파일에서 app://close 의 close 을 따서 finish하게 된다.
                   
        }else{
        view.loadUrl(overrideUrl);
        }
       
        return false;
        }           
     
        public void onReceivedError(WebView view, int errorCode, String description, String fallingUrl) {  
       
        view.loadData("<html><body></body></html>", "text/html", "UTF-8");
         
         
         
         
        //Toast.makeText(activity, "로딩오류"+description, Toast.LENGTH_SHORT).show();  
        }  
   }); 
browser.loadUrl(link);
        // 실행문은 가장 아래 넣는것!! 안그러면 에러가 날것이다.
    
 
}
}