我在Android上使用WebView进行了演示。这是我的代码:
public class AuthPortalActivity extends Activity {
WebView authPortalWebview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.auth_portal_activity);
authPortalWebview = (WebView) findViewById(R.id.auth_portal_webview);
authPortalWebview.setWebViewClient(new WebViewPortal());
openProvisioningPortal();
}
private void openProvisioningPortal() {
authPortalWebview.getSettings().setLoadsImagesAutomatically(true);
authPortalWebview.getSettings().setJavaScriptEnabled(true);
authPortalWebview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
authPortalWebview.loadUrl("https://example.com");
}
}
class WebViewPortal extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d("TAG", "shouldOverrideUrlLoading url = " + url);
return true;
}
@Override
public void onLoadResource(WebView view, String url) {
super.onLoadResource(view, url);
}
@Override
public void onPageFinished(final WebView view, String url) {
super.onPageFinished(view, url);
Log.d("TAG", "onPageFinished");
}
}
它可以加载一些URL,例如Google,Facebook ...但是当我尝试使用Portal URL时,它什么也不能显示。确保我的Portal使用“ https”,并且如果我使用Chrome之类的浏览器,它也可以成功加载...
在这里是加载URL和方法 onPageFinished 之后的WebView。
我在代码中忘记了什么吗?
答案 0 :(得分:1)
返回false
中的shouldOverrideUrlLoading
即可继续正常加载网址
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d("TAG", "shouldOverrideUrlLoading url = " + url);
return false;
// ^^^^^
}
或
您有自己的客户端WebViewPortal
,因此还需要加载网址
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d("TAG", "shouldOverrideUrlLoading url = " + url);
view.loadUrl(url);
//^^^^^^^^^^^^^^ load the url once you receive web view and link
return true;
}
WebViewClient负责处理请求并根据onPageFinish或启动等通知进行操作。
答案 1 :(得分:0)
use this line in Androidmanifest.xml
//-------------this is Internet permission-------------------
<uses-permission android:name="android.permission.INTERNET">
</uses-permission>