2013-07-11 14 views
6

Mam aplikację internetową o nazwie Vane (link). Działa poprawnie na moim telefonie (Samsung S3) i niektórych urządzeniach, ale w niektórych urządzeniach ładuje tylko część html nie js nie css ..Android WebView: ładuje tylko HTML, nie ładuje JS ani CSS (w niektórych urządzeniach)

Jakiś powód? Jest to moja pierwsza aplikacja i nie wiem dużo Java .. Zdjęcia:

to jak to powinno działać (Samsung S3)

enter image description here

I tak to wygląda w niektórych inne urządzenia, tylko html (Xtouch telefon)

enter image description here

kod Webview:

package com.expedyte.vane; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.webkit.GeolocationPermissions; 
import android.webkit.WebChromeClient; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.webkit.WebStorage; 


public class IWeather extends Activity { 


    public class GeoWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     // When user clicks a hyperlink, load in the existing WebView 
     view.loadUrl(url); 
     return true; 
    } 
} 


public class GeoWebChromeClient extends WebChromeClient { 
    @Override 
    public void onGeolocationPermissionsShowPrompt(String origin, 
      GeolocationPermissions.Callback callback) { 

     callback.invoke(origin, true, false); 
    } 
} 

WebView mWebView; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_iweather); 
    WebView mWebView = (WebView) findViewById(R.id.web_engine); 

    mWebView.getSettings().setDomStorageEnabled(true); 
    mWebView.getSettings().setAppCacheEnabled(true);   
    mWebView.getSettings().setDatabaseEnabled(true); 
    String databasePath = this.getApplicationContext().getDir("database",Context.MODE_PRIVATE).getPath(); 
    mWebView.getSettings().setDatabasePath(databasePath); 
    mWebView.setWebViewClient(new GeoWebViewClient()); 
    // Below required for geolocation 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.getSettings().setGeolocationEnabled(true); 
    mWebView.setWebChromeClient(new GeoWebChromeClient() 
    { 
     public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize, long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) { 
       quotaUpdater.updateQuota(5 * 1024 * 1024); 
      } 
     }); 

    mWebView.loadUrl("file:///android_asset/www/weather/index.html"); 
} 
} 

kod HTML:

<!DOCTYPE html> 
<html> 
<head> 
<link rel="shortcut icon" href="/vane/we.ico" type="image/x-icon" /> 
<link rel="stylesheet" href="swiper.css"> 
<link rel="stylesheet" href="style.css?1"> 
<link href='http://fonts.googleapis.com/css?family=Open+Sans:400,300,600' rel='stylesheet'> 
<script src="jquery.js"></script> 
<script src="plugins.js"></script> 
<script src="script.js"></script> 
<script src="http://maps.googleapis.com/maps/api/js?key=AIzaSyCaF3Xp-29k7VdixW4PzUU4wmtRAM7T-RA&sensor=false"></script> 
<meta name="viewport" content="initial-scale=1, user-scalable=no"> 
    </head> 
    <body> 
    <div id="loader"><img src="load.png"></div> 


<div id="weather"> 
    <div class="swiper-container swiper-1" id="mainswipe"> 
      <div class="swiper-wrapper"> 
       <div class="swiper-slide ordinary"> 
        <div class="swiper-container swiper-2"> 
         <div class="swiper-wrapper" id="scroller"> 

         </div> 
        </div> 
       </div> 
       <div class="swiper-slide ordinary" id="places_main"> 
        <div class="card"> 
        <input type="text" class="search" id="search" onclick="if(this.value=='Enter a place.'){this.value=''; this.select()} else {this.select()}" value="Enter a place."></input><div class="go" onclick="addPlace()">+</div> 
        <div id="placeholder"> 
         <div class="swiper-container places"> 
          <div class="swiper-wrapper" id="places"> 
          </div> 
         </div> 
        </div> 
        </div> 
       </div> 
      </div> 
     </div></div> 
<div id="rate"> 
     <div id="rate_title">Rate Us</div> 
     <div id="rate_content">Show us how much you love this app by rating us on the app store. Thank you for checking us out.</div> 
     <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=630139527&pageNumber=0&sortOrdering=1&type=Purple+Software&mt=8"><div class="button confirm">Rate Us</div></a> 
     <div class="button remind" onclick="$('#rate').fadeOut()">Remind me later</div> 
     <div class="button never" onclick="never_again()">Never ask me again</div> 
    </div> 
    <div id='alertbox'> 
     <div id='alertheader'>ALERT</div> 
     <div id='alertcontent'> 
       <div></div> 
     </div> 
     <div class='close' onclick='cancelalert()'>Close</div> 
    </div> 
    <div id="info"> 
    <div class="half"> 
     <div id="header"><div id="back" onclick="hide_info()">Back</div>About</div> 
     <div id="video"> 
      <iframe src="http://www.youtube.com/embed/KLbYRPIZ5-4" frameborder="0" allowfullscreen></iframe> 
     </div> 
    </div> 
    <div id="scroller"> 
     <div class="setting"> 
      <div class="label">Unit</div> 
      <div id="unit">C</div><div class="degree">&ordm;</div> 
      <div class="switch" onclick="changeUnit()"><div id="toggle"></div></div> 
     </div> 
    </div> 
    </div> 
    </body> 
    </html> 
+0

dostał żadnego odpowiedniego kodu? widziałeś to: http://stackoverflow.com/a/16410297/794088? – petey

+0

Tak, widziałem to .. nie ma szczęścia! Ale aplikacja działa poprawnie w moim telefonie i niektórych innych urządzeniach, na których testowałem .. ** Problem występuje tylko w niektórych urządzeniach, które nie działają. ** –

+0

@AmitJoseph dodaj również do html. Odpowiednia część będzie tam, gdzie określasz adresy zasobów zewnętrznych: css + js –

Odpowiedz

-2

Jest to znany błąd w protokole plików dla kilku wersjach Androida. Jeśli odwołujesz się do plików z parametrami adresu URL, pojawia się HTTP 404 (plik nie znaleziony) i plik nie jest załadowany.

W twoim przypadku "style.css? 1" nie zostanie złożone.

Overcoming Honeycomb and Ice Cream Sandwich’s Broken WebView URLs

+5

Link wydaje się być uszkodzony –

+2

Link jest uszkodzony. Rozwiązanie jest niepełne. – Steven

1

Ci kod Edite +

super.onStart(); 

WebView webView = (WebView)findViewById(R.id.webView1); 

//enable JavaScript *** 
webView.getSettings().setJavaScriptEnabled(true); 

webView.loadUrl("file:///android_asset/index.html"); 
Powiązane problemy