Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android no puede implementar el comentario de facebook en una vista web debido al navegador predeterminado

Soy novato en el desarrollo de Android y este cliente webview y webview me está matando. Este es mi escenario:

  1. Tengo que cargar una página web que contiene facebook social plugin (utilizado para comentar sobre esa url en particular) y estoy usando WebView para ello
  2. Cuando el usuario haga clic en su comentario usando Facebook, se le dará una página de inicio de sesión en la misma vista web (en lugar de abrir el navegador predeterminado)
  3. Y una vez que el inicio de sesión es correcto, se mostrará la primera página (la que contiene el complemento social), permitiendo al usuario comentar

Lo que tengo que hacer es emular el proceso de trabajo de navegador, es decir, el usuario cuando se conecta, se le concede automáticamente el permiso para agregar comentarios facebook.

Mi problema:

No sé cómo obtener toda la autenticación del navegador y volver a dirigirla a mi webview de aplicaciones. Lo que quiero es hacer todo el proceso en mi webview de aplicaciones en lugar de ir al navegador predeterminado.

He comprobado todas las preguntas de desbordamiento de la pila y la mayoría de ellos aconsejan sobre el uso de complementos de Facebook de código abierto como Facebook y Facebook android SDK. Además recibí información sobre CookieManager , CookieSyncManager , WebViewClient , WebChromeClient pero no pude implementar mi problema. Y lo más cercano que encontré es esto:

Cómo manejar facebook como con confirmar en android webview

Así que la gente si usted podría señalarme en la dirección correcta, yo estaría muy contento. Todavía estoy tratando de entender sobre cómo hacer toda la acción en una webview y si algo viene, seguramente publicaré.

Gracias por adelantado

Actualizar

Sólo pude implementar el inicio de sesión de facebook pero no pude implementar AOL , Hotmail y Yahoo login. Para el inicio de sesión de facebook sólo cree un WebViewClient personalizado y en el método shouldOverrideUrlLoading

 if(url.contains("https://www.facebook.com/connect/window_comm.php")){ webView.clearHistory(); webView.loadUrl(remoteUrl); } return false; 

Para permitir el inicio de sesión múltiple he implementado la siguiente técnica pero no funciona

  if(url.contains("https://www.facebook.com/connect/window_comm.php")){ String cookieString = cookieManager.getCookie("facebook.com"); if(cookieString != null){ cookieManager.setCookie("remoteUrldomain.com", cookieString); CookieSyncManager.getInstance().sync(); webView.clearHistory(); webView.loadUrl(remoteUrl); } } return false; 

Todavía estoy haciendo mi mejor para encontrar la solución, y cualquier persona hacia fuera allí me guiaría en la dirección apropiada que sería agradecido. Gracias por adelantado

  • Renderizar archivos epub en android
  • Interceptar solicitud de fuente de video HTML5 en Android WebView
  • Teclado suave de Android no panorámico vista web
  • Agregar una vista de pie de página nativa a la vista web
  • Vista web de Android, inicie la actividad ACTION_VIEW cuando la URL no pueda ser manejada por webview
  • Archivos locales de Android WebView + AJAX
  • ¿Cómo mantengo mi aplicación Córdova a pantalla completa al abrir el teclado de Android?
  • Entrada de archivo HTML en android webview (android 4.4, kitkat)
  • One Solution collect form web for “Android no puede implementar el comentario de facebook en una vista web debido al navegador predeterminado”

    La respuesta proporcionada en Cómo manejar facebook como con confirmar en android webview es la mejor solución que he encontrado hasta ahora.Lo que he aprendido es que Android WebView no carga por defecto el popup de las vistas html y para eso necesitamos utilizar WebChromeClient Que maneja todo esto. Mire el siguiente código

      private String requestUrl="some web link containing facebook social comment"; private WebView webView,childView =null; private LinearLayout parentLayout; private Activity MyActivity; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); this.getWindow().requestFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.main); getWindow().setFeatureInt(Window.FEATURE_PROGRESS,Window.PROGRESS_VISIBILITY_ON); parentLayout =(LinearLayout)findViewById(R.id.parentLayout); MyActivity = this; webView = new WebView(this); webView.setLayoutParams(getLayoutParams()); webView.setWebViewClient(new FaceBookClient()); webView.setWebChromeClient(new MyChromeClient()); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setAppCacheEnabled(true); webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); webView.getSettings().setSupportMultipleWindows(true); webView.getSettings().setSupportZoom(true); webView.getSettings().setBuiltInZoomControls(true); parentLayout.addView(webView); webView.loadUrl(requestUrl); } private LinearLayout.LayoutParams getLayoutParams(){ return new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT); } final class MyChromeClient extends WebChromeClient{ @Override public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) { childView = new WebView(SmCommentTestActivity.this); childView.getSettings().setJavaScriptEnabled(true); childView.getSettings().setSupportZoom(true); childView.getSettings().setBuiltInZoomControls(true); childView.setWebViewClient(new FaceBookClient()); childView.setWebChromeClient(this); childView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)); parentLayout.addView(childView); childView.requestFocus(); webView.setVisibility(View.GONE); /*I think this is the main part which handles all the log in session*/ WebView.WebViewTransport transport =(WebView.WebViewTransport)resultMsg.obj; transport.setWebView(childView); resultMsg.sendToTarget(); return true; } @Override public void onProgressChanged(WebView view, int newProgress) { MyActivity.setProgress(newProgress*100); } @Override public void onCloseWindow(WebView window) { parentLayout.removeViewAt(parentLayout.getChildCount()-1); childView =null; webView.setVisibility(View.VISIBLE); webView.requestFocus(); } } private class FaceBookClient extends WebViewClient{ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Log.i("REQUEST URL",url); return false; } } @Override public void onBackPressed() { if(childView != null && parentLayout.getChildCount()==2){ childView.stopLoading(); parentLayout.removeViewAt(parentLayout.getChildCount()-1); if(webView.getVisibility() == View.GONE) webView.setVisibility(View.VISIBLE); }else{ super.onBackPressed(); } } 

    Esto es todo lo que uno tiene que hacer para implementar Facebook Social Comment Plugin en Android WebView y si alguien encuentra algún defecto en él, entonces estaría feliz de corregirlo. Y espero, esta solución ahorraría tiempo y tiempo en cualquier desarrollador problemático como yo; )

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.