반응형
웹 기반의 콘텐츠 자원을 인터넷을 통해 가져오는 대신 애플리케이션 자원(assets) 내에서 가져와야 하는 경우가 있다. 속도의 이점등을 위해서 필요한 경우 webViewAssetLoader을 이용하여 WebView에서 assets 및 ress의 자원에 접근할 수 있는 방법이 있다. |
build.gradle [2]
dependencies {
implementation "androidx.webkit:webkit:1.5.0"
}
java [1]
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));
}
}
java[2]
final WebViewAssetLoader assetLoader = new WebViewAssetLoader.Builder()
.addPathHandler("/assets/", new WebViewAssetLoader.AssetsPathHandler(this))
.addPathHandler("/res/", new WebViewAssetLoader.ResourcesPathHandler(this))
.build();
mWebView.setWebViewClient(new LocalContentWebViewClient(assetLoader));
mWebView.loadUrl("https://appassets.androidplatform.net/assets/index.html");
결론:
아래와 같은 assets의 네이티브 자원을 웹에서 아래와 같은 웹url로 호출하여 접근하여 사용할수 있다.
https://appassets.androidplatform.net/assets/mov_bbb.mp4
https://appassets.androidplatform.net/assets/aaa.css
참고 자료:
[1]인앱 콘텐츠 로드 중 , https://developer.android.com/develop/ui/views/layout/webapps/load-local-conten
[2] Webkit , https://developer.android.com/jetpack/androidx/releases/webkit?hl=ko
반응형
'안드로이드' 카테고리의 다른 글
[Android] MVVM architecture example (0) | 2023.07.13 |
---|---|
[Android] 딥링크(deeplink)의 정의(URI Scheme, App Link, Deferred Deep Link) (0) | 2023.02.07 |
[Android] WebView 에서 bridge(@javascriptIngerface)를 구현 (0) | 2023.01.05 |
[안드로이드] WebView uri scheme 마켓 이동 (0) | 2022.12.06 |
[안드로이드] shortcut의 구현 (0) | 2022.08.31 |