안드로이드

[android]assets 자원접근를 통해서 웹에서 네이티브 자원 접근

IT꿈나무 2023. 2. 1. 15:47
반응형
 웹 기반의 콘텐츠 자원을  인터넷을 통해 가져오는 대신 애플리케이션 자원(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 

반응형