2015-04-04 83 views
1

當我嘗試加載"file:///android_asset/index.html"時,我的android WebView顯示一個空白頁面,並且它完美加載了其他網址,如"http://twitter.com"Android WebView顯示本地文件的空白頁面

我的活動

public class MainActivity extends ActionBarActivity { 

    private WebView myWebView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     myWebView = (WebView) findViewById(R.id.webview); 

     myWebView.addJavascriptInterface(new WebAppInterface(this), "Android"); 

     myWebView.setWebViewClient(new WebViewClient()); 
     WebSettings webSettings = myWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 

     myWebView.loadUrl("file:///android_asset/index.html"); 
    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) { 
      myWebView.loadUrl("file:///android_asset/index.html"); 
      return true; 
     } 
     return false; 
    } 
} 

我的index.html文件:

<!DOCTYPE html> 
<html> 
<head> 
    <title>World Tour</title> 
    <!-- Sets initial viewport load and disables zooming --> 
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui"> 

    <!-- Makes your prototype chrome-less once bookmarked to your phone's home screen --> 
    <meta name="apple-mobile-web-app-capable" content="yes"> 
    <meta name="apple-mobile-web-app-status-bar-style" content="black"> 
    <meta name="mobile-web-app-capable" content="yes"> 

    <link rel="stylesheet" type="text/css" href="css/style.css"> 
    <link rel="stylesheet" type="text/css" href="css/ratchet.css"> 
</head> 
<body> 
    <header class="bar bar-footer"> 
     <a href="views/stats.html" data-transition="slide-out"><span class="icon icon-info pull-left" ></span></a> 
     <a href="views/add.html" data-transition="slide-in"><span class="icon icon-plus pull-right" ></span></a> 
     <h1 class="title">List of previous drive</h1> 
    </header> 

    <div class="content"> 
     <div class="card"> 
      <ul id="drives-list" class="table-view"> 
       <li class="table-view-divider table-view-cell" ><p class="pull-left">Comments</p><p class="pull-right">Distance</p></li> 
      </ul> 
     </div> 
    </div> 

    <script type="text/javascript" src="js/main.js" ></script> 
    <script type="text/javascript" src="js/ratchet.js" ></script> 
</body> 
</html> 

感謝您的幫助!

+0

是否有你放置index.html的文件夾?如果是這樣,那麼您必須在路徑中添加該文件夾名稱。 – 2015-04-04 09:23:15

+0

它在資產文件夾中,可以通過file:/// android_asset/ – Pangoraw 2015-04-04 10:11:28

+0

進行訪問,您似乎已經正確使用它,不確定...可能會嘗試清理項目並再次運行。 – 2015-04-04 10:15:57

回答

0

使用下面的代碼

public static String getStringFromAssets(String name, Context p_context) 
    { 
     try 
     { 
      InputStream is = p_context.getAssets().open(name); 
      int size = is.available(); 
      byte[] buffer = new byte[size]; 
      is.read(buffer); 
      is.close(); 
      String bufferString = new String(buffer); 
      return bufferString; 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
     return null; 

    } 

和負載的內容從資產產生的文件得到字符串內容使用下面的代碼

String m_data = getStringFromAssets("index.html", this); 
webView.loadDataWithBaseURL("file:///android_asset/", m_data, "text/html", "utf-8", null); 

希望你的作品!

+0

它不工作。我相信頁面被加載,因爲我可以使用console.log與JavaScript和它的作品。 – Pangoraw 2015-04-04 10:10:49

0

檢出與html頁面相關的javascript代碼是否有任何錯誤。如果是這樣的話,android studio不會在js文件中指出錯誤。

我修復了js文件中的錯誤,它工作。