#java #android
#java #Android
Вопрос:
Я сохранил файл в корневой папке и пытаюсь открыть его в webview.
Это мой код для сохранения:
OutputStream outstream = null;
outstream = openFileOutput(fileName ,MODE_WORLD_READABLE);
/// if file the available for writing
if (outstream != null) {
/// prepare the file for writing
OutputStreamWriter outputreader = new OutputStreamWriter(outstream);
BufferedWriter buffwriter = new BufferedWriter(outputreader);
/// write the result into the file
buffwriter.write(result);
}
/// close the file
outstream.close();
} catch (java.io.FileNotFoundException e) {
System.out.println("File not found in the writing...");
} catch (IOException e) {
System.out.println("In the writing...");
}
Это мой код для вызова файла:
fileView.getSettings().setJavaScriptEnabled(true);
fileView.loadUrl("file:///" name); <---
и внутри приложения это выдает мне ошибку «файл не найден».
Любая информация полезна.
Ответ №1:
WebView mWebView=(WebView)findViewById(R.id.mWebView);
mWebView.loadUrl("file:///book.html");
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setSaveFormData(true);
mWebView.getSettings().setBuiltInZoomControls(true);
mWebView.setWebViewClient(new MyWebViewClient());
private class MyWebViewClient extends WebViewClient
{
@Override
//show the web page in webview but not in web browser
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl (url);
return true;
}
}
попробуйте это
Комментарии:
1. Это также позволяет избежать сбоя URI в API> 26.
Ответ №2:
На самом деле, когда вы открываете URL с помощью file:///...
Тогда это означает, что вы должны сохранить файл в каталоге assets (скажем test.html ). Теперь предположим, что вам нужно получить доступ test.html файл, который вам нужно записать следующим образом
loadURL("file:///android_asset/test.html');
Комментарии:
1. Я хочу перейти из test.html для page1.html Я использую
<a href="page1.html">Page 1 </a>
в test.html потому что оба находятся в одном каталоге, но не работают
Ответ №3:
Указан неверный путь, предполагающий, что исключения не были затронуты.
file:/// указывает браузеру искать /name
openFileOutput (имя файла) сообщает приложению о необходимости записи в <application-files-directory>/fileName
Ваш URL-адрес должен быть «file:///» getFilesDir() File.separator fileName
Комментарии:
1. Я подумываю о том, чтобы начать создавать игры для Android. Теоретически, возможно ли для меня создать html5 canvas и игру на javascript, сохранить файлы локально на телефоне Android, а затем открыть их с помощью webview, позволяющего игроку играть в игру?
Ответ №4:
Для файлов, которые будут поставляться в комплекте с приложением, вы можете добавить папку «asset» в свой проект, щелкнув правой кнопкой мыши ваше приложение в project Explorer, затем выберите
Создать=> Папка => Папка активов.
Добавьте HTML-файл в свою папку ресурсов, затем загрузите его с помощью:
fileView.loadUrl("file:///android_asset/" name);
тот же URL может использоваться в вашем HTML для ссылки на другие HTML или CSS файлы.
Ответ №5:
Вы можете сначала прочитать свой файл ресурсов, а затем отобразить его в webview через asd следующим образом
BufferedReader read = null;
StringBuilder data = new StringBuilder();
try {
read = new BufferedReader(new InputStreamReader(getAssets().open("htmlFile.html"), "UTF-8"));
String webData;
while ((mLine = read.readLine()) != null) {
data.append(mline);
}
} catch (IOException e) {
log(",e.getmessage()) } finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
log(",e.getmessage())
}
}
}
а затем загрузите эти данные в webview
webview.loadData(data, "text/html", "UTF-8");
Ответ №6:
Пожалуйста, обратитесь к видео на YouTube https://youtu.be/n2KbDqoCv_Q?t=173
Я протестировал его решение, и оно работает.