마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 웹뷰에서 로컬csv파일을 불러드리는데 오류가 발생합니다.

0 추천

안녕하세요 안드로이드 웹뷰에서 로컬csv파일을 불러드리는데 오류가 발생합니다.

 

 

해당 html 파일을 크롬에서 실행하면 아래와 같이 발생하고 파이어폭스에서 하면 발생이 안되는데요..

안드로이드 웹뷰가 크롬기반으로 되어 있는것 같습니다. 

로컬파일을 ajax 통신으로 불러드리니깐 생기는 오류인거 같은데 혹시 안드로이드에서도 오류가 없게 하려면 어떻게 행야하나요? 

 

 

Access to XMLHttpRequest at 'file:///file.csv' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https

 

 

웹뷰 호출과 html ajax 로직은 아래와 같습니다.

 

 

 

 

webView  = (WebView) findViewById(R.id.main_webview);
WebSettings settings = webView.getSettings();

//Enable Javascript
settings.setJavaScriptEnabled(true);

//Enable DOM storage, and tell Android where to save the Database
settings.setDatabasePath("/data/data/"+this.getPackageName()+"/databases/");
settings.setDomStorageEnabled(true);

webView.loadUrl("file:///android_asset/index.html");

webView.setWebChromeClient(new WebChromeClient() {

    /** Called when the database exceeds it's maximum size **/
   @Override
   public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize, long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) {
        //Double the estimated size of the Database
       quotaUpdater.updateQuota(estimatedSize * 2);
    }
});
 
 
<pre>$.ajax({
    type: "GET",
    url: "file.csv",
    dataType: "text",
    success: function(data) {processData(data);}
 });
grape111 (1,950 포인트) 님이 2018년 12월 18일 질문

1개의 답변

0 추천
 
채택된 답변
webview.loadData("file:///android_asset/index.html", "text/html; charset=utf-8", "utf-8");

mimetype과 encoding이 지정되지 않아서 생기는 문제 같습니다.

loadUrl 대신에 위와 같이 loadData를 사용해 보세요. 

 

커피콩 (3,640 포인트) 님이 2018년 12월 18일 답변
grape111님이 2020년 7월 29일 채택됨
...