android - Android Web 视图未加载此静态 Html
问题描述
我有一个 html 字符串,可以在浏览器中正常加载,但是当尝试在 andriod 网络视图中加载时,它显示空白屏幕而没有任何错误。我不想通过文件 url 加载,因为我希望这个字符串中的参数是动态的。
public class MainActivity extends Activity {
private ProgressDialog prg;
private WebView webView;
private int counter=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
String htmlString = "<!DOCTYPE html>\n" +
"<html>\n" +
"\n" +
"<head>\n" +
" <meta charset=\"utf-8\">\n" +
" <title></title>\n" +
" <meta name=\"author\" content=\"\">\n" +
" <meta name=\"description\" content=\"\">\n" +
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n" +
"\n" +
" \n" +
"</head>\n" +
"\n" +
"<body>\n" +
"\n Hello" +
"<my-component source-url=\"https://fcc3ddae59ed.us-west-2.playback.live-video.net/api/video/v1/us-west-2.893648527354.channel.DmumNckWFTqz.m3u8\"/>\n" +
"\n" +
"<script src='https://unpkg.com/rahulrsingh09-stenciltest2@0.0.3/dist/test/test.js'></script>\n" +
"</body>\n" +
"\n" +
"</html>";
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView =(WebView)findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setAppCachePath(getApplicationContext().getCacheDir().getPath());
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
webView.setWebViewClient(new WebViewClient());
webView.loadData(htmlString, "text/html; charset=utf-8", "UTF-8");;
}
public void getWebview(String myurl)
{
webView.setWebViewClient(new WebViewClient()
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
prg.show();
return super.shouldOverrideUrlLoading(view, url);
}
@Override
public void onPageFinished(WebView view, String url) {
prg.dismiss();
view.getSettings().setJavaScriptEnabled(true);
super.onPageFinished(view, url);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
});
prg = ProgressDialog.show(MainActivity.this, "Blog App", "İçerik Yükleniyor", true);
webView.loadUrl(myurl);
}
@Override
protected void onResume() {
super.onResume();
}
@Override
public void onBackPressed() {
if (webView.canGoBack()) {
webView.goBack();
} else {
super.onBackPressed();
}
}
}
这里有什么问题可以向我指出吗?
编辑
解决方案
尝试以下 -> 未提供基本 URL 的问题。
public class MainActivity2 extends Activity {
private ProgressDialog prg;
private WebView webView;
private int counter = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
String htmlString = "<!DOCTYPE html>\n" +
"<html>\n" +
"\n" +
"<head>\n" +
" <meta charset=\"utf-8\">\n" +
" <title></title>\n" +
" <meta name=\"author\" content=\"\">\n" +
" <meta name=\"description\" content=\"\">\n" +
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n" +
"\n" +
" \n" +
"</head>\n" +
"\n" +
"<body>\n" +
"\n Hello" +
"<my-component source-url=\"https://fcc3ddae59ed.us-west-2.playback.live-video.net/api/video/v1/us-west-2.893648527354.channel.DmumNckWFTqz.m3u8\"/>\n" +
"\n" +
"<script src='https://unpkg.com/rahulrsingh09-stenciltest2@0.0.3/dist/test/test.js'></script>\n" +
"</body>\n" +
"\n" +
"</html>";
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_web);
webView = (WebView) findViewById(R.id.webView);
WebSettings settings = webView.getSettings();
settings.setBuiltInZoomControls(true);
settings.setDomStorageEnabled(true);
settings.setJavaScriptEnabled(true);
settings.setAppCacheEnabled(true);
settings.setAppCachePath(getApplicationContext().getCacheDir().getPath());
settings.setCacheMode(WebSettings.LOAD_DEFAULT);
webView.setWebViewClient(new WebViewClient());
webView.loadDataWithBaseURL("https://fcc3ddae59ed.us-west-2.playback.live-video.net", htmlString, "text/html", "UTF-8", null);
}
public void getWebview(String myurl) {
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
prg.show();
return super.shouldOverrideUrlLoading(view, url);
}
@Override
public void onPageFinished(WebView view, String url) {
prg.dismiss();
view.getSettings().setJavaScriptEnabled(true);
super.onPageFinished(view, url);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
});
prg = ProgressDialog.show(MainActivity2.this, "Blog App", "İçerik Yükleniyor", true);
webView.loadUrl(myurl);
}
@Override
protected void onResume() {
super.onResume();
}
@Override
public void onBackPressed() {
if (webView.canGoBack()) {
webView.goBack();
} else {
super.onBackPressed();
}
}
}
推荐阅读
- soapui - 制作一个可以返回 429 状态码的 soapui 模拟 REST 服务
- javascript - 读取组件文件 Angular 中的响应标头
- .htaccess - 如果源网址在 Google Search Console 中标记为已排除,是否可以删除来自 .htaccess 的旧重定向 301?
- vim - 如何在 Vim 可视块插入模式下立即获得所有行的视觉反馈?
- r - 如何将单个数字与R中的矩阵绑定
- php - 我们可以在不截断表的情况下执行播种机吗?或者有什么方法可以实现这一点
- amazon-web-services - 寻找高计算、低存储服务器
- java - 我对java的这个Builder Design模式代码有点困惑
- django - 如何为基于类的登录视图添加额外的上下文?
- c - 如何使用C发出警报声?