gpt4 book ai didi

android - 如何在同一个webview应用中打开两个不同的url

转载 作者:太空狗 更新时间:2023-10-29 14:44:44 26 4
gpt4 key购买 nike

我正在开发一个 android 电子商务应用程序,我在其中使用 webview 将响应式网站调用到移动应用程序中,并且每个功能都运行良好,但是当我单击 PAYONLINE 时,它会在浏览器中打开支付网关页面。如何隐藏该浏览器并打开同一应用程序的支付网关页面?

主 Activity .java

package com.prashantlaldas;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;


public class MainActivity extends Activity {

public WebView mWebView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.webView);
WebSettings webSettings = mWebView.getSettings();
mWebView.getSettings().setUseWideViewPort(false);
webSettings.setJavaScriptEnabled(true);
mWebView.loadUrl("http://www.google.com/");



mWebView.setWebViewClient(new MyAppWebViewClient() {
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
// mWebView.loadUrl("file:///android_asset/error.html");
String data = "\n" +
"\n" +
"<div id=\"container\">\n" +
"\n" +
"<div class=\"connection-problem\">\n" +
"<p><img src=\"noconnection.png\" width=\"100px\" height=\"69px\"></p>\n" +
"\n" +
"<p>No internet connection.</br>Please Turn ON your data or wifi</p>\n" +
"<a href=\"http://www.google.com/ class=\"button\" style=\"background-color: #fff;border: none;color: #de1616;padding: 8px 22px;text-align: center;border-radius: 4px;text-decoration: none;display: inline-block;font-size: 16px;margin: 4px 2px;cursor: pointer;border: 1px solid #de1616;\">Retry</a>\n" +
"</div>\n" +
"</div>\n" +
"<style>\n" +
".connection-problem{text-align: center;margin-top: 50%;}\n" +
"#container {\n" +
" display: flex; /* establish flex container */\n" +
" flex-direction: column; /* stack flex items vertically */\n" +
" justify-content: center; /* center items vertically, in this case */\n" +
" align-items: center; /* center items horizontally, in this case */\n" +
" height: 300px; \n" +
"\n" +
"}\n" +
" \n" +
" \n" +
" \n" +
"\n" +
"</style>";

mWebView.loadDataWithBaseURL("file:///android_asset/error.html", data, "text/html", "utf-8", null);
}


@Override
public void onPageFinished(WebView view, String url) {
//hide loading image
findViewById(R.id.progressBar).setVisibility(View.GONE);
//show webview
findViewById(R.id.webView).setVisibility(View.VISIBLE);

}


}

);



}



@Override
public void onBackPressed() {
if (mWebView.canGoBack()) {
mWebView.goBack();
} else {
super.onBackPressed();
finish();
}
}



}

MyAppWebViewClient.java

package com.prashantlaldas;

/**
* Created by oct on 10/17/2016.
*/
import android.content.Intent;
import android.net.Uri;
import android.webkit.WebView;
import android.webkit.WebViewClient;

/**
* Created by oct on 10/12/2016.
*/
public class MyAppWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view,String url){
if(Uri.parse(url).getHost().endsWith("www.google.com"))
{
return false;
}

Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(url));
view.getContext().startActivity(intent);
return true;
}
}

最佳答案

只需检查一下

public class MainActivity extends AppCompatActivity {

private WebView mWebView = null;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);


setContentView(R.layout.activity_main);

mWebView = (WebView) findViewById(R.id.webView);
mWebView.setVerticalScrollBarEnabled(true);
mWebView.setHorizontalScrollBarEnabled(true);
mWebView.setWebViewClient(new myWebClient());
WebSettings webSettings = mWebView.getSettings();
webSettings.setDomStorageEnabled(true);
webSettings.setJavaScriptEnabled(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);

// load URL here
mWebView.loadUrl("http://www.google.com/");
}


/**
* The type My web client.
*/
public class myWebClient extends WebViewClient {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
// page started event
}

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}

@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
}

@Override
public void onPageFinished(final WebView view, final String url) {
super.onPageFinished(view, url);
new Thread(new Runnable() {
@Override
public void run() {
// hide progress bar
}
}).start();
}
}
}

关于android - 如何在同一个webview应用中打开两个不同的url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41887216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com