상세 컨텐츠

본문 제목

[android] 안드로이드 Assets 폴더 내에 html을 넣고 리소스,코드들 css, img, js 등등 를 상대경로로 사용하기

스마트기기개발관련/안드로이드 개발

by AlrepondTech 2018. 3. 30. 18:21

본문

반응형
728x170

 

 

=================================

=================================

=================================

 

 

 

출처: http://androcode.tistory.com/20

 

 

HTML 파일을 APK 로컬영역에 두고 로딩을 하려 할 때, Assets 폴더에 넣고, webview.loadUrl()을 하는 것이 일반적입니다.

그러나 이렇게 로딩을 하면 HTML 파일내에 있는 상대경로나 파일들을 다음과 같이 모두 변경해줘야 합니다.

 

    WebView view = new WebView(this);     view.getSettings().setJavaScriptEnabled(true);     view.loadUrl("file:///android_asset/hello.html");     setContentView(view); 

 

 

더 큰 문제점은 이 경우 HTML 내부에서 참조하는 이미지 파일 및 CSS파일들의 경우도 모두 "file:///android_asset/"으로 시작하는 절대경로로 맞춰야 합니다.

 

다음과 같이 HTML 파일과 CSS, IMG 파일들을 폴더형태 그대로 넣고 사용할 수 있습니다.

 

 

 

 

 

우선 index.html 파일을 String으로 읽어들입니다.

이렇게 읽어들인 데이터를 myWebView.loadDataWithBaseURL( )로 로딩하면 됩니다.

 

/** * Gets html content from the assets folder. */ private String getHtmlFromAsset() { InputStream is; StringBuilder builder = new StringBuilder(); String htmlString = null; try { is = getActivity().getAssets().open("index.html"); if (is != null) { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String line; while ((line = reader.readLine()) != null) { builder.append(line); } htmlString = builder.toString(); } } catch (IOException e) { e.printStackTrace(); } return htmlString; } /** * Loads html page with the content. */ private void loadHtmlPage() { String htmlString = getHtmlFromAsset(); if (htmlString != null) myWebView.loadDataWithBaseURL("file:///android_asset/", htmlString, "text/html", "UTF-8", null); else Toast.makeText(getActivity(), "html이 없습니다", Toast.LENGTH_LONG).show(); }

 





출처: http://androcode.tistory.com/20 [ANDRO::CODE]

 

 

=================================

=================================

=================================

 

 

반응형
그리드형


관련글 더보기

댓글 영역