programing

HTML 파일을 WebView로 로드

powerit 2023. 8. 1. 20:50
반응형

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 에서:

  1. HTML을 자산으로 저장합니다.app/src/main/assets/
  2. 자산을 로드하는 데 사용합니다.사용자 환경에 구축onCreate()다음과 같이:
final WebViewAssetLoader assetLoader = new WebViewAssetLoader.Builder()
         .addPathHandler("/assets/", new WebViewAssetLoader.AssetsPathHandler(this))
         .addPathHandler("/res/", new WebViewAssetLoader.ResourcesPathHandler(this))
         .build();
  1. 랩할 하위 클래스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자산에서 웹 콘텐츠를 로드합니다.

  1. 사용하다assetLoader(2)부터 건설까지WebViewClient(3)에서, 그리고 그것을 당신의 안에 설정합니다.WebView.당신의.index.htmlhttps 및 기본 도메인을 사용하여 로드할 수 있습니다.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

반응형