2012-05-23 67 views
0

我已經制作了一個應用程序,用於從sd卡中讀取html文件並在webview中顯示它。這是在Android 3.2中成功運行,但是當我將其更改爲4.0並在Micromax平板電腦上運行以進行測試時。它發出一個錯誤「鏈接可能暫時關閉或者它已經移動到新地址」即使它也不在仿真器中運行。你可以告訴我4.0 doent支持從SD卡訪問文件或請建議什麼概率。Android 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

你可以使用一個ContentProvider的到本地文件用來作爲顯示在網頁視圖: 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的添加到您的清單。