Cómo manejar facebook como con confirmar en android webview

Estoy tratando de implementar facebook como funcionalidad usando android webview. Está funcionando bien sin "confirmar" el diálogo. Pero no funciona cuando necesita confirmación. Aquí está el fragmento de código que estoy usando.

private void setUpWebView() { likeWebView.setVerticalScrollBarEnabled(false); likeWebView.setHorizontalScrollBarEnabled(false); likeWebView.setWebViewClient(new FacebookWebViewClient()); likeWebView.setWebChromeClient(new MyChromeClient()); likeWebView.getSettings().setJavaScriptEnabled(true); String url = getFacebookLikeUrl(); likeWebView.loadUrl(url); } 

También estoy configurando ViewClient y WebChromeClient.

 private String getFacebookLikeUrl() { return "http://www.facebook.com/plugins/like.php?" + "href=" + URLEncoder.encode(mUrl) + "&access_token=" + URLEncoder.encode(facebook.getAccessToken()); } 

Por favor, ayúdame a solucionar este problema. Gracias por adelantado.

Facebook como confirmación se abre confirm_widget en una nueva ventana. Por lo tanto, su webview debe admitir la apertura de múltiples ventanas. para este setJavaScriptCanOpenWindowsAutomatically (true) y setSupportMultipleWindows (true) para su webview-

  private void setUpWebView() { likeWebView = new WebView(getContext()); likeWebView.setWebViewClient(new FacebookWebViewClient()); likeWebView.setWebChromeClient(new MyChromeClient()); final WebSettings webSettings = likeWebView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setJavaScriptCanOpenWindowsAutomatically(true); webSettings.setSupportMultipleWindows(true); String url = getFacebookLikeUrl(); likeWebView.loadUrl(url); likeWebView.setLayoutParams(FILL); mContent.addView(likeWebView); } 

Facebook como la confirmación llama al método onCreateWindow (). SO anula el método onCreateWindow en WebChromeClient –

 final class MyChromeClient extends WebChromeClient { // Add new webview in same window @Override public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) { WebView childView = new WebView(getContext()); childView.getSettings().setJavaScriptEnabled(true); childView.setWebChromeClient(this); childView.setWebViewClient(new FacebookWebViewClient()); childView.setLayoutParams(FILL); mContent.addView(childView); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView(childView); resultMsg.sendToTarget(); return true; } // remove new added webview whenever onCloseWindow gets called for new webview. @Override public void onCloseWindow(WebView window) { mContent.removeViewAt(mContent.getChildCount() - 1); } } 

confirm_widget for like calls onCloseWindow cuando el usuario hace clic en Like o Cancel. En este método se elimina la última vista web agregada.

Utilicé esto para Stripe Checkout, que abre una nueva ventana en dispositivos móviles para pagos.

Basado en la respuesta de @ Shweta:

En tu actividad:

 package myapp.app; /*** imports ***/ public class LoggedActivity extends FragmentActivity { public WebView myWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.logged); // retrieve the main container LinearLayout container = (LinearLayout) findViewById(R.id.logged_webviews_container); // layout params applied to the webviews in order to fit 100% the parent container LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT); myWebView = new WebView(this); myWebView.setLayoutParams(layoutParams); myWebView.setWebViewClient(new BetterWebViewClient(this)); WebSettings settings = myWebView.getSettings(); settings.setJavaScriptEnabled(true); settings.setJavaScriptCanOpenWindowsAutomatically(true); settings.setSupportMultipleWindows(true); // on this instruction, we set our extended class below as the Parent Webview webchromeclient myWebView.setWebChromeClient(new PopupWebView(this, myWebView, container, layoutParams)); // load URL myWebView.loadUrl('http://www.mywebsite.com'); container.addView(myWebView); } } 

Agregue esta clase que extiende WebChromeClient

 package myapp.app; /*** imports ***/ public class PopupWebChromeClient extends WebChromeClient { protected Activity activity; protected WebView parentWebView; protected RelativeLayout container; protected WebView popupView; PopupWebChromeClient( Activity activity, WebView parentWebView, RelativeLayout container ) { super(); this.activity = activity; this.parentWebView = parentWebView; this.container = container; } @Override public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) { this.parentWebView.setVisibility(WebView.GONE); this.popupView = new WebView(this.activity); // setup popuview and add this.popupView.getSettings().setJavaScriptEnabled(true); this.popupView.setWebChromeClient(this); this.popupView.setWebViewClient(new ApkfWebViewClient(this.activity, true)); this.popupView.setLayoutParams(new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT )); this.container.addView(this.popupView); // send popup window infos back to main (cross-document messaging) WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView(popupView); resultMsg.sendToTarget(); return true; } // remove new added webview on close @Override public void onCloseWindow(WebView window) { this.popupView.setVisibility(WebView.GONE); this.parentWebView.setVisibility(WebView.VISIBLE); } } 

En el xml de su diseño, no defina las vistas en la Web, ya que las creamos de inmediato.

  • ¿Cómo puedo añadir facebook SDK al proyecto android?
  • La fuente de Android SDK de Android no se compilará con Eclipse Indigo
  • Recursos $ NotFoundException se lanza integrando Facebook-android-sdk-3.0
  • Clics de Facebook SDK 4.7.0 ClassNotFoundException para AppEventsLogger
  • Cómo obtener APP_ID para Facebook?
  • Facebook SDK 3 EOFException
  • Android - Métodos en DialogListener adjunto a Facebook.authorize () no se recibe
  • Invitar solicitud de amigo con el nuevo SDK de Android 3.0
  • Facebook Publicar en tu nombre no funciona en android facebook sdk 3.0.2
  • Error al usar proguard con Android Facebook sdk 3.0
  • Facebook Android SDK 4.0.0 no obtener información del perfil
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.