我正在从我的 android 应用程序加载一个网络应用程序。在 URL 的初始加载中,它会重定向到登录页面,登录后,它将移动到 Web 应用程序的主屏幕。但预期的行为是在登录后将其重定向到 Native Homescreeb。因此,我已经编写了通过比较 URL 在 onPageFinished 中启动新活动的意图。但它会在移动到 Activity 之前显示网页 2 秒钟。我试着在那个案子上隐藏 Webview。然后显示一个空白屏幕 2 秒并显示一个 Activity。请参阅下面的实现,如果有任何问题,请纠正我。
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
try {
String loadingURL =request.getUrl().toString();
view.loadUrl(request.getUrl().toString());
} catch (Exception e) {
}
return true;
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
try{
handler.proceed();
}catch (Exception e){
e.printStackTrace();
}
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
if(url.contains("https://login.microsoftonline.com/"))
{
mWebview.setVisibility(View.VISIBLE);
}
else if(url.contains(GlobalDeclarations.BASE_URL_WEBAPP_DEV) )
{
progress_div.setVisibility(View.VISIBLE);
mWebview.setVisibility(View.GONE);
}
}
@Override
public void onPageCommitVisible(WebView view, String url) {
super.onPageCommitVisible(view, url);
Log.d("onPageCommitVisible", "onPageCommitVisible" + url);
}
@Override
public void onLoadResource(WebView view, String url) {
super.onLoadResource(view, url);
if (mWebview.getProgress() == 100) {
if(url.contains(GlobalDeclarations.BASE_URL_WEBAPP_DEV))
{
mWebview.setVisibility(View.GONE);
}
else
{
mWebview.setVisibility(View.VISIBLE);
}
progress_div.setVisibility(View.GONE);
}
}
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.d("onPageFinished", "onPageFinished URL........ " + url );
mWebview.evaluateJavascript("common.setFromApp(" + true + ")", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
if (value.equals("false"))
{
mWebview.setVisibility(View.GONE);
Intent intent = new Intent(view.getContext(), BaseActivity.class);
startActivity(intent);
}
else
{
mWebview.setVisibility(View.VISIBLE);
}
}
});