2010-11-13 2 views
0

У меня есть HTML-форма внутри WebView. Элемент управления формой выглядит как обычная кнопка, но на самом деле это html-файл с прозрачным фоном. Когда я нажимаю кнопку отправки HTML, я хочу, чтобы результат был открыт в браузере, а не в веб-просмотре. В настоящее время он открывается в текущем WebView, который разрушает мой макет.Открыть форму WebView в браузере при нажатии кнопки отправки

Как это сделать?

Вот моя форма

<string name="googlecheckout_html_button"> 
<![CDATA[ 
<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?> 
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> 
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\"> 
    <head> 
    <title>Google Checkout Button</title> 
    <script type=\"text/javascript\" language=\"javascript\"> 
     function pass() { 
      return javaInterface.checkboxPass(); 
     } 
    </script> 
    </head> 
    <body> 
     <form style=\"width: 121px;margin-left: auto;margin-right: auto;\" onsubmit=\"return pass();\" action=\"https://%1$sapi/checkout/v2/checkoutForm/Merchant/%2$s\" id=\"BB_BuyButtonForm\" method=\"post\" name=\"BB_BuyButtonForm\"> 
      <input name=\"item_name_1\" type=\"hidden\" value=\"%3$s\" /> 
      <input name=\"item_description_1\" type=\"hidden\" value=\"%3$s\" /> 
      <input name=\"item_quantity_1\" type=\"hidden\" value=\"1\" /> 
      <input name=\"item_price_1\" type=\"hidden\" value=\"%4$s\" /> 
      <input name=\"item_currency_1\" type=\"hidden\" value=\"%5$s\" /> 
      <input name=\"_charset_\" type=\"hidden\" value=\"utf-8\" /> 
      <input type=\"hidden\" name=\"shopping-cart.items.item-1.merchant-private-item-data\" value=\"%6$s\" /> 
      <input alt=\"Pay With Google Checkout\" src=\"https://%1$sbuttons/buy.gif?merchant_id=%2$s&amp;w=121&amp;h=44&amp;style=trans&amp;variant=text&amp;loc=en_US\" type=\"image\" /> 
     </form> 
    </body> 
</html> 
]]> 
</string> 

Я тогда с помощью string.Format (аргумент ...) для заполнения полей с соответствующими значениями.

Вот по WebView

String form = String.format(getString(R.string.googlecheckout_html_button), 
         host, 
         merchantId, 
         item_name_1, 
         item_price_1, 
         item_currency_1, 
         private_item_data 
         ); 

       if(Logging.DEBUG) Log.d(TAG, form); 

       browser = new WebView(ActivityActivate.this); 
       browser.setBackgroundColor(0); 
       browser.getSettings().setJavaScriptEnabled(true); 
       browser.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
       browser.getSettings().setSupportZoom(true); 
       browser.setWebViewClient(new WebViewClient() { 
        @Override 
        public boolean shouldOverrideUrlLoading(WebView view, 
          String url) { 
         return false; 
        } 
       }); 
       //browser.getSettings().setLoadsImagesAutomatically(true); 

       browser.addJavascriptInterface(new JavascriptInterface(), "javaInterface"); 
       //browser.loadData(header+formData+footer, "text/html", "UTF-8"); 
       browser.loadDataWithBaseURL("https://checkout.google.com", form, "text/html", "UTF-8", null); 
       llPaymentButtons.addView(browser); 
+0

вы имея HTML-файл и хотите открыть в WebView? –

+0

@PM нет, у меня уже есть веб-просмотр, я, когда я нажимаю кнопку отправки в веб-представлении, хочу, чтобы он загружался в браузере. – jax

ответ

1

формы представлены на серверы не браузеров. Убедитесь, что у вас есть правильный URL-адрес, где вы отправляете форму.

Чтобы решить проблему, необходимо переопределить WebViewClient.shouldOverrideUrlLoading(..):

webview.setWebViewClient(new WebViewClient() { 
    public void shouldOverrideUrlLoading (WebView view, String url) { 
     return false; 
    } 
}); 
+0

Я пробовал это, и он все еще не работал. Он по-прежнему открывается в веб-браузере, а не в новом окне браузера. \t \t \t \t browser.setWebViewClient (новый WebViewClient() { \t \t \t \t \t @Override \t \t \t \t \t общественного логический shouldOverrideUrlLoading (вид WebView, \t \t \t \t \t \t \t Строка URL) { \t \t \t \t \t \t return false; \t \t \t \t \t} \t \t \t \t}); – jax

+0

Убедитесь, что вы не используете 'browser.setWebViewClient (..)' несколько раз. –

+0

только один случай присутствует в коде – jax

Смежные вопросы