0

我制作了一个应用程序,我在其中从 sd 卡读取 html 文件并在 webview 中显示它。这在 Android 3.2 中成功运行,但是当我将其更改为 4.0 并在 Micromax 平板电脑上运行以进行测试时。它给出了一个错误“链接可能暂时关闭或它已移动到新地址”即使它也没有在模拟器中运行。你能告诉我 4.0 不支持从 SD 卡访问文件吗?或者有什么问题请建议。

代码片段是:

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;
    }
}  
4

2 回答 2

1

您可以使用 ContentProvider 将本地文件提供给 WebView,如下所示: http: //blog.tourizo.com/2009/02/how-to-display-local-file-in-android.html

更改覆盖的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");

不要忘记将 ContentProvider 添加到您的清单中。

于 2012-05-23T10:08:19.493 回答
-1

检查平板上的文件路径是否相同

于 2012-05-23T09:56:15.900 回答