를 사용하여 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/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">
답변
프로젝트 폴더의 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.
답변
프로젝트의 자산 폴더에 .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);
답변
html 파일을 수동으로 읽은 다음 WebView의 loadData
또는 loadDataWithBaseUrl
방법 을 사용 하여 표시 할 수 있습니다.
답변
디버그 컴파일 로부터 다른 릴리스 때문에, 하나
다음과 같은 프로젝트 파일 구조를 고려하십시오 [ 디버그 어셈블의 경우이 경우 ] :
src
|
debug
|
assets
|
index.html
다음과 같이 WebView에 index.html 을 호출해야합니다 .
web.loadUrl("file:///android_asset/index.html");
따라서 릴리스 어셈블의 경우 다음과 같아야합니다.
src
|
release
|
assets
|
index.html
다음 구조는 컴파일 [ 디버그 및 릴리스 ] 모두에서 작동합니다 .
src
|
main
|
assets
|
index.html