2011-03-16 22 views
23

Ben varlıklarından WebView sayfalarını hizmet sorunu üzerinde çeşitli tartışmalar gördük, bunların hiçbiri kesin gibiydi.Android varlık dosyalarını bir Web Görünümünde görüntüleme?

ben proje varlıkları saklanan dosyaları html (ve dahil css) görüntülemek için bir web görüntülemesini kullanmak isterler.

buldum ki wv.loadUrl ("file: ///android_asset/html_no_copy/demo_welcome.html") tamam dosyasını görüntüler, ancak demo_welcome.html bağlantıları, ya (hayır url dosya adını önek) yerel veya mutlak - loadUrl'e beslenenle aynı form - çalışmaz. Görünümde "Web sayfası yok" hatası görüntüleniyor.

WebView wv = (WebView)this.findViewById(R.id.splashWebView); 
wv.loadUrl("file:///android_asset/html_no_copy/test.html"); // Works 

veya

wv.loadUrl("file:///android_asset/html_no_copy/demo_welcome.html"); // Works 

Ama demo_welcome.html çalışmalarında aşağıdaki bağlantılardan hiçbiri:

<a href="test.html">CLICK HERE</a><p> 
<a href="file:///android_asset/html_no_copy/test.html">OR HERE</a> 

Ben bir içerik sağlayıcı yazarak bu sorunun üstesinden gelebilirsiniz biliyorum ama görünüyor aşırı.

bu yukarı SDK 1.6 (4) den çalışmak istiyorum.

herkes bu sadece HTML ile yapılabilir olmadığını bilmek veya Kluge en fazla bir ihtiyaç verilerini yüklemek için bazı kod yapar mı ?

cevap

28

Bence bu recurse olacağını bir uyarı rağmen (1.6 ve 2.2 üzerine) çalışıyor gibi görünüyor şey buldum.

Ayrıca, birinci ve ikinci sayfanın içinde bir css stil sayfası bağlantısının, aşağıdaki engel olmadan çalıştığı da keşfettim. Garip ve beni biraz tedirgin ediyor. Düşünceler? İşte

WebView wv = (WebView)this.findViewById(R.id.splashWebView); 
wv.setWebViewClient(new WebViewClient() { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    { 
    view.loadUrl(url); 
    return true; 
    } 
}); 
wv.loadUrl("file:///android_asset/html_no_copy/demo_welcome.html"); 

dosya içeriği var: Burada

kod yerine loadURL ait

demo_welcome.html: 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
    <title>Demo Html</title> 
    <link rel="stylesheet" type="text/css" href="demo.css" /> 
    </head> 
    <body> 
    <H1>Testing One Two Three</H1> 
    <a href="test.html">CLICK HERE</a><p> 
    <a href="file:///android_asset/html_no_copy/test.html">OR HERE</a> 
    </body> 
</html> 

test.html: 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
    <link rel="stylesheet" type="text/css" href="test.css" /> 
    <title>Insert title here</title> 
    </head> 
    <body> 
    <H1>TEST.HTML</H1> 
    </body> 
</html> 
8

, loadDataWithBaseURL yöntemini kullanmayı deneyin:

wv.loadDataWithBaseURL("fake://not/needed", html, mimeType, encoding, ""); 
+0

Merhaba Stephane, html nedir geçtiğiniz nesne kullanılmayan ilk argüman mı? –

+0

+1 Bu benim için çalıştı. İlk argüman sadece sahte bir temel url'dir. Her şey olabilir. Ve html HTML kodunu içeren dizedir. – Kayla

+2

Kirli ve soruya cevap vermiyor. –

İlgili konular