2017-07-06 25 views
0

我有一個webview的問題。我在onCreate方法中獲取url。在那個頁面中,我點擊提交按鈕後有一個登錄屏幕,用戶應該重定向另一個,不同的網站網址,並且也去新標籤。我怎樣才能做到這一點?它現在不能執行任何事情。如何在webview中重定向外部鏈接android

@Override 
     public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
      super.onActivityCreated(savedInstanceState); 

     if (getArguments() != null) { 
      tvScreenTitle.setText(getArguments().getString(CONTENT_TITLE)); 
     } 
     new Handler().post(new Runnable() { 
      @Override 
      public void run() { 

       int logoMarginY = (int) (rlScreenHeader.getHeight() * 0.6f); 
       int logoMarginX = (int) (rlScreenHeader.getWidth() * 0.3f); 

       UIHelper.setMarginTop(btnBack, logoMarginY - btnBack.getHeight()/2); 
       UIHelper.setMarginTop(tvScreenTitle, logoMarginY - tvScreenTitle.getHeight()/2); 
       UIHelper.setMarginLeft(tvScreenTitle, logoMarginX); 
      } 
     }); 

     webView.getSettings().setJavaScriptEnabled(true); 
     webView.getSettings().setUseWideViewPort(true); 
     webView.getSettings().setLoadWithOverviewMode(true); 
     webView.getSettings().setBuiltInZoomControls(true); 
     webView.getSettings().setSupportMultipleWindows(true); 
     webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
     webView.setWebChromeClient(new WebChromeClient() { 
      @Override 
      public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) 
      { 
       webView.loadUrl(url); 
       return true; 
      } 
      public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) { 
       callback.invoke(origin, true, false); 
      } 
     }); 
     webView.setWebViewClient(webViewClient); 


     webView.loadUrl(this.url); 
    } 

這是我的onCreateView;

@Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_app_browser, container, false); 
     ButterKnife.bind(this, view); 

     UIHelper.setTypeface(rootFragment, GlobalApplication.getInstance().getTypeface()); 
     return view; 
    } 

    boolean loadingFinished = true; 
    boolean redirect = false; 

    WebViewClient webViewClient = new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      if (!loadingFinished) { 
       redirect = true; 
      } 
      loadingFinished = false; 
      webView.loadUrl(url); 
      return true; 
     } 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      loadingFinished = false; 

      AppBrowserFragment.this.url = url; 
      tvAddressBarTitle.setText(url); 

      progressAddressBar.setVisibility(View.VISIBLE); 
      rlAddressBar.setVisibility(View.VISIBLE); 
      btnRefresh.setImageResource(R.drawable.browsericon_reloadover); 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      if(!redirect){ 
       loadingFinished = true; 
      } 

      if(loadingFinished && !redirect){ 
       AppBrowserFragment.this.url = url; 

       if (StringUtils.isNotNullOrWhitespace(title)) { 
        tvAddressBarTitle.setText(title); 
       } 
       else { 
        tvAddressBarTitle.setText(view.getTitle()); 
       } 

       progressAddressBar.setVisibility(View.INVISIBLE); 
       rlAddressBar.setVisibility(View.GONE); 

       btnRefresh.setImageResource(R.drawable.browsericon_reload); 

       btnBackBrowser.setImageResource(webView.canGoBack() ? R.drawable.browsericon_back : R.drawable.browsericon_backover); 
       btnForward.setImageResource(webView.canGoForward() ? R.drawable.browsericon_forward : R.drawable.browsericon_forwardover); 

      } 
      else { 
       redirect = false; 
      } 
     } 

     @Override 
     public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { 
      handler.cancel(); 
     } 
    }; 

回答

0

使用條件反之亦然,你什麼都想要

@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    if (url.contains("/shuffle")) { 
     mWebView.loadUrl(url); 
     return false; 
    } else { 
     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setData(Uri.parse(url)); 
     startActivity(intent); 
     return true; 
    } 
} 
0

您需要在用戶點擊提交按鈕,開始新的意圖,你有新的URL傳遞給意圖爲使用意圖可用的putExtra方法的參數。

Intent intent = new Intent(this, CLASSNAME.class); 
intent.putExtra(URL, <url>); 
startActivity(intent); 
+0

如何理解用戶在webview中做了什麼? – Onur

+0

你的意思是在webview中提交按鈕本身? –

+0

是在webview中打開的網址。 – Onur

相關問題