Интерфейс, диалоги, темы, стили, меню
-
Anikey82
- Сообщения: 5
- Зарегистрирован: 09 авг 2015, 15:49
Сообщение
Anikey82 » 29 сен 2015, 14:18
Как загрузить локальный файл.html из assets в WebView?
Через loadUrl получается, но тогда не работают ссылки на другие файлы, нашел, что нужно через loadDataWithBaseURL, но этот код не работает.
Код: Выделить всё
public class MainActivity extends AppCompatActivity {
private WebView text;
String summary = "<html><body>" + text + "</body></html>";
@Override
public void onCreate(Bundle paramBundle) {
super.onCreate(paramBundle);
setContentView(R.layout.activity_main);
WebView localWebView = (WebView) findViewById(R.id.webview);
localWebView.getSettings().setJavaScriptEnabled(true);
localWebView.loadDataWithBaseURL("file:///android_asset/context.html", summary, "text,html", "utf-8", null);
}
Вот структура проекта в AndroidStudio
Код: Выделить всё
srs
main
assets
context.html
1.html
res
java
Буду премного благодарен за помощь.
-
ANdriy123456
- Сообщения: 138
- Зарегистрирован: 27 июн 2014, 01:41
Сообщение
ANdriy123456 » 29 сен 2015, 16:56
Код: Выделить всё
mWebView=(WebView)findViewById(R.id.web);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setSaveFormData(true);
mWebView.getSettings().setBuiltInZoomControls(false);
mWebView.setWebViewClient(new MyWebViewClient());
mWebView.loadUrl("file:///android_asset/def.html");
желетельно использовать свой WebViewClient
Код: Выделить всё
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;
}
}
-
Anikey82
- Сообщения: 5
- Зарегистрирован: 09 авг 2015, 15:49
Сообщение
Anikey82 » 29 сен 2015, 18:00
В строке
WebView localWebView = (WebView) findViewById(R.id.webview);
ошибка(
Код: Выделить всё
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;
WebView localWebView = (WebView) findViewById(R.id.webview);
localWebView.getSettings().setJavaScriptEnabled(true);
localWebView.getSettings().setSaveFormData(true);
localWebView.getSettings().setBuiltInZoomControls(false);
localWebView.setWebViewClient(new MyWebViewClient());
localWebView.loadUrl("file:///android_asset/context.html");
-
ANdriy123456
- Сообщения: 138
- Зарегистрирован: 27 июн 2014, 01:41
Сообщение
ANdriy123456 » 29 сен 2015, 21:20
используйте там полностю мой код для WebViewClient.
ишибка там аз-за что, после строки "return true;" у вас никогда не доходит дальше (невозможный код).
p.s. WebViewClient нужен для того, чтобы ссылки в context.html откривалась в этом WebView, а не в стандартном браузере
-
Anikey82
- Сообщения: 5
- Зарегистрирован: 09 авг 2015, 15:49
Сообщение
Anikey82 » 08 окт 2015, 15:55
Код: Выделить всё
private class MyWebViewClient extends WebViewClient {
@Override
//show the web page in webview but not in web browser
public boolean shouldOverrideUrlLoading(WebView view, String url) {
WebView localWebView = (WebView) findViewById(R.id.webview);
localWebView.getSettings().setJavaScriptEnabled(true);
localWebView.getSettings().setSaveFormData(true);
localWebView.getSettings().setBuiltInZoomControls(false);
localWebView.setWebViewClient(new MyWebViewClient());
localWebView.loadUrl("file:///android_asset/context.html");
view.loadUrl(url);
return true;
Пустую страницу загружает.
-
Anikey82
- Сообщения: 5
- Зарегистрирован: 09 авг 2015, 15:49
Сообщение
Anikey82 » 17 окт 2015, 07:56
Сделал так:
Код: Выделить всё
String webData = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webData = getHtmlFromAsset();
WebView webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setSaveFormData(true);
webView.addJavascriptInterface(new JavaScriptIntefeise(this), "Android");
webView.loadDataWithBaseURL(getAssets().toString(), webData, "text/html", "UTF-8", null);
}
private String getHtmlFromAsset() {
InputStream is;
StringBuilder builder = new StringBuilder();
String htmlString = null;
try {
is = getAssets().open(getString(R.string.context));
if (is != null) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
htmlString = builder.toString();
}
} catch (IOException e) {
e.printStackTrace();
}
return htmlString;
}
class JavaScriptIntefeise {
Context ctx;
public JavaScriptIntefeise(Context ctx) {
this.ctx = ctx;
}
}
Теперь страница загружается, но ссылки и стили, скрипты все равно не работают, уже все обгуглил(((