2017-01-27 8 views
3

私はwebviewを使用してモバイルアプリケーションに応答するWebアプリケーションを呼び出すためのアンドロイド電子商取引アプリケーションを開発していますが、PAYONLINEをクリックすると支払いゲートウェイページブラウザに表示されます。そのブラウザを非表示にして、同じアプリケーションの支払いゲートウェイページを開く方法は?同じWebviewアプリケーションで2つの異なるURLを開く方法

MainActivity.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; 
    } 
} 
+0

をチェックし、あなたがインドであると仮定します。問題を再現するためにコードを使用しました。外部ブラウザでgoogle.co.inを読み込みます。 –

+0

はい私はインドから –

+0

String host = Uri.parse(url).getHost(); if(host.contains( "www.google.co.in")){ falseを返します。 } –

答えて

0

ちょうどこの

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(); 
     } 
    } 
} 
+0

が含まれています。ありがとうございます@Young –

+0

@PrashantDas私は助けてくれてうれしいです – young

関連する問題