2015-04-04 4 views
1

Мой Android-браузер показывает пустую страницу, когда я пытаюсь загрузить "file:///android_asset/index.html", и он отлично загружает другой URL-адрес, например "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? Если это так, вы должны добавить это имя папки в свой путь. –

+0

он находится в папке с ресурсами, к которой можно получить доступ с файлом: /// android_asset/ – Pangoraw

+0

, вы, похоже, использовали его правильно, не уверен ... может попытаться очистить проект и снова запустить .. –

ответ

0

получить содержимое строки из файла assests используя ниже кода

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

0

Оформить заказ, если имеются ошибки в javascript-коде, связанные с html-страницей. Если это так, то андроид-студия не указывает на ошибки в js-файле.

Я исправил ошибки в файле js и работал.

Смежные вопросы