java Android WebView不加载URL?
我有一个Android WebView,它应该加载以下URL:
https://buchung.salonmeister.de/ort/301655/menue/#offerId=907601&venueId=301655
https://buchung.salonmeister.de/place/#offer-details-page?id=907599&venueId=301655
以下是我所做的:
<RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
xmlns:tools="http://schemas.安卓.com/tools"
安卓:layout_width="match_parent"
安卓:layout_height="match_parent"
安卓:background="@安卓:color/holo_orange_light"
tools:context=".MainActivityFragment">
<WebView
安卓:id="@+id/webView"
安卓:layout_width="match_parent"
安卓:layout_height="wrap_content"
安卓:layout_alignParentTop="true"
安卓:layout_alignParentBottom="true"
安卓:layout_margin="5dp"
安卓:layout_above="@+id/progressBar"></WebView>
<ProgressBar
安卓:id="@id/progressBar"
安卓:layout_width="match_parent"
安卓:layout_height="wrap_content"
安卓:layout_alignParentBottom="true"
安卓:visibility="invisible"
style="?安卓:attr/progressBarStyleHorizontal"/>
<TextView
安卓:id="@+id/titleView"
安卓:text="@string/hello_world"
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"/>
</RelativeLayout>
在onCreateView()
中:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_main, container, false);
String url = // some url
final ProgressBar progressBar = (ProgressBar)v.findViewById(R.id.progressBar);
progressBar.setMax(100);
final TextView titleView = (TextView)v.findViewById(R.id.titleView);
mWebView = (WebView)v.findViewById(R.id.webView);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setAllowContentAccess(true);
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
});
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int progress) {
if (progress == 100) {
progressBar.setVisibility(View.INVISIBLE);
progressBar.setProgress(0);
} else {
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(progress);
}
}
@Override
public void onReceivedTitle(WebView view, String title) {
titleView.setText(title);
}
});
mWebView.loadUrl(url);
return v;
}
当我开始活动时,屏幕为空
注意:这不是布局问题。请不要评论布局,而是关注真正的问题强>
如何在WebView中加载上述URL强>
编辑:以下是我授予的权限:
<uses-permission 安卓:name="安卓.permission.INTERNET" />
<uses-permission 安卓:name="安卓.permission.READ_PHONE_STATE" />
<uses-permission 安卓:name="安卓.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission 安卓:name="安卓.permission.GET_ACCOUNTS" />
<uses-permission 安卓:name="安卓.permission.ACCESS_NETWORK_STATE" />
编辑:
在我的控制台中,我得到以下信息:
I/chromium: [INFO:CONSOLE(84)] "undefined", source: https://buchung.salonmeister.de/place/ (84)
09-13 15:12:33.230 28407-28407/de.test.webviewtest I/chromium: [INFO:CONSOLE(1)] "Uncaught Error: Script error for: widget/venue-menu/mobile/venue-menu-app
09-13 15:12:33.230 28407-28407/de.test.webviewtest I/chromium: http://requirejs.org/docs/errors.html#scripterror", source: https://buchung.salonmeister.de/javascript-module/1.162.3/thirdparty/require.2.1.10.js (1)
# 1 楼答案
如果需要,可以尝试使用不确定进度条示例并删除setWebChromeClient 请尝试以下代码:
}
# 2 楼答案
更新:使用
setJavaScriptEnabled(false);
,Url"https://buchung.salonmeister.de/ort/301655/menue/#offerId=907601&venueId=301655"
可以在WebView中成功显示我已经使用了您的全部代码,这里是我的web视图结果。我想可能是因为我试图在手机的网络浏览器中打开你的两个URL,所以该网站还没有移动就绪(仍在加载…)
# 3 楼答案
第一个问题是您必须交换ProgressBar和WebView的位置
第二个问题是这一行:
在RelativeLayout中,您必须事先声明视图id,以便可以将另一个视图放置在上面(右、左是相同的方式)以创建视图
同样的一句话:
在RelativeView中,视图不能在ID的上方(或下方、从左到右)布局,而ID是免费生成的
是吗
IDE将自动生成一个新ID,该ID与您指的要在上面布局的WebView的ID不同。在ProgressBar声明中,再次使用@+id/ProgressBar,它将重新生成另一个id
因此,您的WebView在上面被布局为空,您甚至看不到WebView,它可能会加载URL,而您就是看不到它
祝你好运
# 4 楼答案
这可能会解决您的问题:
# 5 楼答案
你的URL是https,所以是ssl问题
您可以在other question中找到解决方案
# 6 楼答案
我也遇到了同样的问题。将useWideViewPort从WebView的设置设置设置为true修复了该问题。
WebView#getSettings().setUseWideViewPort(true);