Pregunta

He intentado poner el botón +1 de Google en WebView utilizando los métodos que describen. He inicializado la vista web de la siguiente manera:

final WebView web = (WebView)findViewById(R.id.webView);
web.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
web.getSettings().setJavaScriptEnabled(true);
web.getSettings().setSavePassword(false);
web.getSettings().setBuiltInZoomControls(false);
web.getSettings().setUseWideViewPort(true);
web.getSettings().setLoadWithOverviewMode(true);
web.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
web.setHorizontalScrollBarEnabled(false);
web.setBackgroundColor(0xff2e2e2e);
web.loadDataWithBaseURL(null, htmlCodeGoesHere, "text/html", "utf-8", null);

Y el código HTML:

<script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
<g:plusone href="http://stackoverflow.com"></g:plusone>

El problema es ... el botón no se muestra en absoluto.

¿Cómo lo arreglo? Por cierto, también quiero que el botón inicie una nueva ventana en su lugar usando WebView. ¿Hay una solución simple?

Gracias

¿Fue útil?

Solución

El problema radica en el sistema de permisos en WebView. Los scripts en archivos locales tienen problemas para acceder a recursos externos. La solución es hacer que WebView crea que el código local se cargó desde el sitio web externo.

web.loadDataWithBaseURL("http://fake.com", htmlCodeGoesHere, "text/html", "utf-8", null);

El botón aparecerá, pero desafortunadamente no funciona bien en WebView.

Otros consejos

No tengo demasiada experiencia con WebView, pero el hecho de que el botón no aparece en absoluto, parece que podría ser un problema en su archivo de diseño/main.xml. ¿Has echado un vistazo a esto todavía?

Además, para que el botón inicie una nueva ventana, creo que es posible adjuntar un setOnClickListener, una vez que se haga, simplemente trátelo como un botón y abrir una nueva ventana. Espero que sea posible.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top