2014-04-25 3 views
0

Я разрабатываю программу для чтения epub. Мне удалось извлечь файлы из epub и создать файл-файл на SD-карте устройства. Однако, когда я пытаюсь прочитать файл .xhtml. Это не работает. Вместо этого я попытался открыть html-файл, и он работает.Как открыть файл xhtml в Android-браузере Android

Вот мой код для загрузки .xhtml

webView = (WebView) findViewById(R.id.webview); 
webView.setWebViewClient(new ReaderWebClient()); 
webView.getSettings().setSupportZoom(true); 
webView.getSettings().setBuiltInZoomControls(true); 
webView.getSettings().setDisplayZoomControls(false); 
webView.getSettings().setJavaScriptEnabled(true); 
webView.getSettings().setAllowFileAccess(true); 
webView.loadUrl("file:///" + Environment.getExternalStorageDirectory() + "/epub/EPUB/cover.xhtml"); 

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

WebView просто показывает, «Веб-страница недоступна»

Я делаю что-то не так? Спасибо за любую помощь

+0

Попробуйте создать объект 'File', указывающий на ваш файл, а затем используйте' Uri.fromFile() 'для генерации' Uri' для использования с 'loadUrl()'. – CommonsWare

+0

Хорошо, я попробую это :) – kishidp

+0

Не удалось отправить сообщение с веб-страницы. Хотя веб-просмотр ничего не отображает. После проверки журнала, он говорит W/AwContents (11558): nativeOnDraw не удалось; очистка цвета фона. – kishidp

ответ

0

Попробуйте это:

webView.loadUrl("file://" + Environment.getExternalStorageDirectory().getAbsolutePath() + "epub/EPUB/cover.xhtml"); 
1

Моим решения для этого я получаю данные для каждого элемент (.xhtml файла) и передать его в качестве аргумента loadDataWithBaseUrl(). Я просто должен определить правильный путь для файлов, чтобы изображения и CSS могли быть загружены правильно.

String baseUrl = "file:///" + Environment.getExternalStorageDirectory() + "/epub" + bookFilename + "/OPS/"; 
String data = new String(bookReader.book.getContents().get(2).getData()); 

webView.loadDataWithBaseURL(baseUrl, data, "application/xhtml+xml", "utf-8", null); 
1

Используйте это:

webView.loadUrl("file://" + Environment.getExternalStorageDirectory().getAbsolutePath() + "epub/EPUB/cover.xhtml"); 

и получить разрешение для записи на хранение в файле манифеста, как это:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
0

Это мой рабочий код .Try он.

 if(android.os.Build.VERSION.SDK_INT>=android.os.Build.VERSION_CODES.HONEYCOMB) 
     { 
      getSettings().setAllowContentAccess(true); 
     } 
     getSettings().setJavaScriptEnabled(true); 
     getSettings().setLayoutAlgorithm(LayoutAlgorithm.NORMAL); 
     getSettings().setAllowFileAccess(true);  
     if(android.os.Build.VERSION.SDK_INT>=android.os.Build.VERSION_CODES.JELLY_BEAN) 
     { 
      getSettings().setAllowUniversalAccessFromFileURLs(true); 
     } 
     loadUrl("file://"+Environment.getExternalStorageDirectory()+"/epub/EPUB/cover.xhtml"); 

после перекрестной проверки пути к файлу.

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