2017-07-06 12 views
0

webviewに問題があります。私はonCreateメソッドでurlを取得します。そのページでは、送信ボタンをクリックした後にログイン画面が表示され、別のWebサイトのURLをリダイレクトして新しいタブに移動する必要があります。どうやってやるの?今は何もできません。androidのwebviewで外部リンクをリダイレクトする方法

@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です。あなたは

@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

利用条件その逆インテントで使用可能なputExtraメソッドを使用するパラメータ。

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

あなたはユーザークリックがボタンを送信したときに新しい意図を開始する必要がしたい、とあなたが意図などに新しいURLを渡す必要があり、これまで何

@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

ユーザーがwebviewで行ったことをどのように理解できますか? – Onur

+0

webviewで送信ボタン自体を意味しますか? –

+0

はい、webviewで開かれたURLです。 – Onur

関連する問題