HTML 파일을 WebView로 로드
로컬 html 페이지와 함께 웹 뷰에 로드하고 싶은 다른 리소스(css 파일 및 Javascript 라이브러리)가 있습니다. 어떻게 해야 합니까?
아마도 가장 좋은 시술 방법은 아닐 수도 있지만, 저는 여전히 실험 중입니다.
가장 쉬운 방법은 웹 리소스를 자산 폴더에 저장한 후 다음을 호출하는 것입니다.
webView.loadUrl("file:///android_asset/filename.html");
Java와 Webview 간의 완전한 통신은 다음을 참조하십시오.
업데이트: 자산 폴더는 일반적으로 다음 폴더입니다.<project>/src/main/assets
파일의 자산 폴더 구성 설정에서 다음과 같이 변경할 수 있습니다.
<option name=”ASSETS_FOLDER_RELATIVE_PATH” value=”/src/main/assets” />
문서 참조Android Studio에서 자산 폴더를 배치할 위치
아마도 이 샘플이 도움이 될 것입니다.
WebView lWebView = (WebView)findViewById(R.id.webView);
File lFile = new File(Environment.getExternalStorageDirectory() + "<FOLDER_PATH_TO_FILE>/<FILE_NAME>");
lWebView.loadUrl("file:///" + lFile.getAbsolutePath());
이 경우, 사용WebView#loadDataWithBaseUrl()
보다 낫습니다WebView#loadUrl()
!
webView.loadDataWithBaseURL(url,
data,
"text/html",
"utf-8",
null);
url: url/path 디렉터리를 가리키는 모든 JavaScript 파일 및 html 링크가 원래 위치를 가집니다.null인 경우 다음과 같습니다. blank.data:예를 들어 버퍼링된 Reader로 읽는 hmtl 파일이 포함된 문자열
추가 정보:WebView.load데이터베이스 포함URL(java.lang).문자열, java.lang.문자열, java.lang.문자열, java.lang.문자열, java.lang.문자열)
승인된 답변이 나에게 적용되지 않습니다. 이것이 나에게 적용되는 것입니다.
WebSettings webSetting = webView.getSettings();
webSetting.setBuiltInZoomControls(true);
webView1.setWebViewClient(new WebViewClient());
webView.loadUrl("file:///android_asset/index.html");
XML 레이아웃 파일:
<WebView android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/webView"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".activities.Bani9">
</WebView>
Java 코드:
public class Bani9 extends AppCompatActivity {
WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bani9);
webView = findViewById(R.id.webView);
WebSettings webSetting = webView.getSettings();
webSetting.setBuiltInZoomControls(true);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("file:///android_asset/punjabi/bani9.html");
}
}
파일 경로를 정확하게 설정해야 합니다.
공식 가이드 https://developer.android.com/develop/ui/views/layout/webapps/load-local-content 에서:
- HTML을 자산으로 저장합니다.
app/src/main/assets/
- 자산을 로드하는 데 사용합니다.사용자 환경에 구축
onCreate()
다음과 같이:
final WebViewAssetLoader assetLoader = new WebViewAssetLoader.Builder()
.addPathHandler("/assets/", new WebViewAssetLoader.AssetsPathHandler(this))
.addPathHandler("/res/", new WebViewAssetLoader.ResourcesPathHandler(this))
.build();
- 랩할 하위 클래스
WebViewAssetLoader
:
private static class LocalContentWebViewClient extends WebViewClientCompat {
private final WebViewAssetLoader mAssetLoader;
LocalContentWebViewClient(WebViewAssetLoader assetLoader) {
mAssetLoader = assetLoader;
}
@Override
@RequiresApi(21)
public WebResourceResponse shouldInterceptRequest(WebView view,
WebResourceRequest request) {
return mAssetLoader.shouldInterceptRequest(request.getUrl());
}
@Override
@SuppressWarnings("deprecation") // to support API < 21
public WebResourceResponse shouldInterceptRequest(WebView view,
String url) {
return mAssetLoader.shouldInterceptRequest(Uri.parse(url));
}
}
이것은 기본적으로 요청 URL을 전달합니다.WebViewAssetLoader
자산에서 웹 콘텐츠를 로드합니다.
- 사용하다
assetLoader
(2)부터 건설까지WebViewClient
(3)에서, 그리고 그것을 당신의 안에 설정합니다.WebView
.당신의.index.html
https 및 기본 도메인을 사용하여 로드할 수 있습니다.appassets.androidplatform.net
:
mWebView.setWebViewClient(new LocalContentWebViewClient(assetLoader));
mWebView.loadUrl("https://appassets.androidplatform.net/assets/index.html");
로컬 파일을 로드할 때 대신 웹과 같은 URL을 사용합니다.file://
Same-Origin 정책과 호환되기 때문에 바람직합니다.
언급URL : https://stackoverflow.com/questions/5749569/load-html-file-into-webview
'programing' 카테고리의 다른 글
Oracle에서 대/소문자 구분 안 함 (0) | 2023.08.01 |
---|---|
fragment를 제거하는 방법, 즉 finish()와 동등한 fragment를 제거하는 방법? (0) | 2023.08.01 |
플렉스 베이스와 폭의 차이점은 무엇입니까? (0) | 2023.08.01 |
MySQL max()가 있는 그룹 함수를 잘못 사용함 (0) | 2023.08.01 |
java -jar를 실행하는 동안 Main-Class 매니페스트 특성을 로드하지 못했습니다. (0) | 2023.08.01 |