Android WebView로 기존 .html 파일로드
를 사용하여 샘플, Google 코드 및 기타 리소스의 데모를 WebView
사용해 보았지만 내 코드로 시도하면 작동하지 않습니다.
myfile.html
자산 폴더에 넣고 다음을 사용하여 로드하고 싶습니다 .
private WebView myWebView;
myWebView.loadUrl("file:///android_assets/myfile.html");
에뮬레이터에서 오류 표시
의 웹 페이지를 다음
file:///android_assets/myfile.html
으로로드 할 수 없습니다. 요청한 파일을 찾을 수 없습니다./android_assets/myfile.html
그 파일을 res/raw/
폴더에 넣고 다음을 사용하면 :
myWebView.loadUrl("file:///android_res/raw/myfile.html");
그런 다음 에뮬레이터 android 2.2 API 레벨 8 만 파일을로드 할 수 있으며 다른 이전 버전에서도 동일한 오류가 표시됩니다. 내가 뭔가를 놓치고 있습니까?
모든 API 버전에서 작동하는 애플리케이션 패키지에 기존 .html 파일을로드하는 방법이 있습니까?
그래, 그건 내 아주 어리석은 실수였다. 누군가 같은 문제가있을 경우를 대비하여 여기에 답변을 게시합니다.
자산 폴더에 저장된 파일의 올바른 경로는 file:///android_asset/*
(항상 "s"가 있어야한다고 생각했던 자산 폴더에 "s"가 없음)입니다.
그리고 mWebView.loadUrl("file:///android_asset/myfile.html");
모든 API 수준 에서 작동합니다.
mWebView.loadUrl("file:///android_res/raw/myfile.html");
API 레벨 8에서만 작동 하는 이유를 아직 파악 하지 못했지만 지금은 중요하지 않습니다.
프로젝트 폴더의 assets 폴더에 .html 파일을 붙여 넣으십시오. 다음 코드를 사용하여 레이아웃 폴더에 xml 파일을 만듭니다. my.xml :
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
활동에 다음 코드 추가
setContentView(R.layout.my);
WebView mWebView = null;
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("file:///android_asset/new.html"); //new.html is html file name.
구조가 다음과 같아야하는 경우 :
/assets/html/index.html
/assets/scripts/index.js
/assets/css/index.css
그런 다음 ( Android WebView : 방향 변경 처리 )
if(WebViewStateHolder.INSTANCE.getBundle() == null) { //this works only on single instance of webview, use a map with TAG if you need more
webView.loadUrl("file:///android_asset/html/index.html");
} else {
webView.restoreState(WebViewStateHolder.INSTANCE.getBundle());
}
추가하십시오
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
webSettings.setAllowFileAccessFromFileURLs(true);
webSettings.setAllowUniversalAccessFromFileURLs(true);
}
그런 다음 URL을 사용하십시오.
<html>
<head>
<meta charset="utf-8">
<title>Zzzz</title>
<script src="../scripts/index.js"></script>
<link rel="stylesheet" type="text/css" href="../css/index.css">
프로젝트의 자산 폴더에 .html 파일을 복사하여 붙여넣고 onCreate ()의 활동에 아래 코드를 추가하십시오.
WebView view = new WebView(this);
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl("file:///android_asset/**YOUR FILE NAME**.html");
view.setBackgroundColor(Color.TRANSPARENT);
setContentView(view);
You could read the html file manually and then use loadData
or loadDataWithBaseUrl
methods of WebView to show it.
The debug compilation is different from the release one, so:
Consider your Project file structure like that [this case if for a Debug assemble]:
src
|
debug
|
assets
|
index.html
You should call index.html into your WebView like:
WebView web=(WebView)findViewById(R.id.web);
web.loadUrl("file:///android_asset/index.html");
The layout:
<WebView
android:id="@+id/web"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="top"/>
So forth, for the Release assemble, it should be like:
src
|
release
|
assets
|
index.html
참고URL : https://stackoverflow.com/questions/4027701/loading-existing-html-file-with-android-webview
'IT story' 카테고리의 다른 글
학교 시간표를 만드는 알고리즘 (0) | 2020.09.15 |
---|---|
Eclipse에서 코드 블록을 축소하는 방법은 무엇입니까? (0) | 2020.09.15 |
바이트 배열을 문자열로 변환 (Java) (0) | 2020.09.15 |
EmberJS / Ember Data에서 단일 경로로 여러 모델을 사용하는 방법은 무엇입니까? (0) | 2020.09.15 |
SQL Server 브라우저를 시작할 수 없습니다. (0) | 2020.09.15 |