TestWebViewActivity.java 파일 입니다.
WebView는 android 2.2버젼 이후 부터 지원 합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | package arabiannight.tistroy.com; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.webkit.WebView; import android.webkit.WebViewClient; public class TestWebViewActivity extends Activity{ private WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); setLayout(); // 웹뷰에서 자바스크립트실행가능 mWebView.getSettings().setJavaScriptEnabled( true ); // 구글홈페이지 지정 // WebViewClient 지정 mWebView.setWebViewClient( new WebViewClientClass()); } @Override public boolean onKeyDown( int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { mWebView.goBack(); return true ; } return super .onKeyDown(keyCode, event); } private class WebViewClientClass extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true ; } } /* * Layout */ private void setLayout(){ mWebView = (WebView) findViewById(R.id.webview); } } |
main.xml 파일 입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?xml version= "1.0" encoding= "utf-8" ?> <LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android" android:layout_width= "fill_parent" android:layout_height= "fill_parent" android:orientation= "vertical" > <WebView android:id= "@+id/webview" android:layout_width= "fill_parent" android:layout_height= "fill_parent" /> </LinearLayout> |
AndroidManifest.xml 파일 입니다.
< 인터넷을 사용하기 위해서 퍼미션은 꼭 선언 해줘야 합니다. >
1 | <uses-permission android:name= "android.permission.INTERNET" />
|
만약 화면 전체를 Webview처럼 특정 url만 보여줄때는 Webview 대신 Intent.ACTION_VIEW 를 통해 간단하게 보여 줄 수 있습니다.
1 2 | startActivity(intent); |
출처 - http://arabiannight.tistory.com/54
코드에서
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
이부분은 뒤로가기 키를 눌렀을 때, 이전 페이지가 존재하면 전페이지로 돌아가게 해줍니다.
그리고,
private class WebViewClientClass extends WebViewClient 에서
WebViewClientClass 클래스는 WebViewClient 클래스를 상속받아서 만들었는데, WebViewClient 는 WebView 에서 로딩한 웹페이지의 링크를 클릭했을 때, 해당 URL을 로딩하는 데 필요합니다.
안드로이드의 WebView는 WebKit/android포트를
JNI 인터페이스를 통해 java형태로 제공하는 Widget 입니다.
1. html 파일로 네트워크에 접속하려면 permission이 필요합니다.
AndroidManifest.xml 파일에
<uses-permission android:name="android.permission.INTERNET"/>
추가
2. HTML에 <body onload="a();"> 와 같은 자바스크립트를 썼을 때 동작하지 않는 문제는 WebView가 기본적으로 Javascript 사용이 disable 되어 있기 때문입니다.
wv.getSettings().setJavaScriptEnabled(true);
3. WebView를 load했을 때 오른쪽에 흰 줄(흰 배경)이 보이는 것은 scrollbar 영역이 잡혀있기 때문입니다.
이것을 사라지게 하려면 아래 한줄을 추가합니다.
wv.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
출처 - http://bunhere.tistory.com/249
WebChromeClient를 구현
출처 - http://www.androidpub.com/925308
'Android > Common' 카테고리의 다른 글
Why do variable names often start with the letter 'm'? (0) | 2013.01.19 |
---|---|
Javascript에서 Android 함수 호출하기 (1) | 2013.01.02 |
android - app 버전 관리 (0) | 2012.10.07 |
service - Service API 변경 (0) | 2012.09.28 |
android - SharedPreferences (0) | 2012.09.24 |
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("AlertDialog")
.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.loadUrl(/*웹 페이지 주소*/);