2012-05-23 5 views
0

나는 SD 카드에서 HTML 파일을 읽고 웹뷰에 표시하는 앱을 만들었습니다. 그것은 Android 3.2에서 성공적으로 실행되었지만 4.0으로 변경하고 테스트를 위해 Micromax 태블릿에서 실행했습니다. "링크가 일시적으로 다운되었거나 새 주소로 이동했습니다"라는 오류 메시지가 나타납니다. 심지어 에뮬레이터에서도 실행되지 않습니다. 당신이 SD 카드에서 파일에 접근하는 4.0 doent 지원을 말해 줄 수 있습니까?안드로이드 4.0에서 WebView 오류

코드는 다음과 같습니다 파일 경로 태블릿에서 동일

WebView webComp = (WebView) findViewById(R.id.webView); 
WebSettings webSettings = webComp.getSettings(); 
webSettings.setJavaScriptEnabled(true); 
webSettings.setSupportZoom(false); 
webSettings.setAllowFileAccess(true); 
webSettings.setLoadsImagesAutomatically(true); 
webSettings.setSavePassword(false); 
webSettings.setSaveFormData(false); 
webSettings.setJavaScriptEnabled(true);   

webComp.setWebViewClient(new HelloWebViewClient());      

    webComp.loadUrl("file://sdcard/Tab-Demo/index10.html");    
    } 
} 

class HelloWebViewClient extends WebViewClient 
{ 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl (url); 
     return true; 
    } 
} 

답변

-1

선택하면

+0

4.0은 다른 경로를 취하고 3.2 ?? 그것은 3.2에서 성공적으로 실행되기 때문입니다. – Naina

+1

구현이 버전마다 또는 공급 업체에 따라 변경 될 수 있으므로 하드 코딩하는 대신 런타임에 경로를 가져 오는 것이 가장 좋습니다. Environment.getExternalStorageDirectory()를 사용하여 SD 카드의 루트를 가져옵니다. – Mus

1

당신은 컨텐트 프로의 사용에 이상 같이 웹보기 로컬 파일을 제공 할 수 있도록 수 : http://blog.tourizo.com/2009/02/how-to-display-local-file-in-android.html

변경 오버라이드 (override) openFile은 SD 카드로 설정 루트로 파일을 제공하는

이 방법
@Override 
public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException { 
    File file = new File(Environment.getExternalStorageDirectory(), uri.getPath()); 
    ParcelFileDescriptor parcel = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY); 
    return parcel; 
} 

당신은 매니페스트에 컨텐트 프로 바이더를 추가하는 것을 잊지 마십시오

webComp.loadUrl("content://Tab-Demo/index10.html"); 

와 파일에 액세스 할 수 있습니다.

관련 문제