2014-01-07 57 views
1

後,我利用Facebook的HTML像我的應用程序打開一個網頁視圖這樣https://developers.facebook.com/docs/plugins/like-button/Facebook的喜歡上的WebView的Android顯示黑屏登錄

web視圖顯示了贊和共享按鈕,但在我登錄到Facebook上,它不會返回到Like和Share按鈕,而是一個空白頁面,分享按鈕可以正常工作。

那麼登錄後如何返回Facebook呢?

public class LikeFacebookActivity extends BaseActivity { 

    private WebView webView; 
    private final String URL = "facebookIDhere"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.like_facebook_webview); 

     webView = (WebView) findViewById(R.id.webView1); 
     webView.getSettings().setJavaScriptEnabled(true); 
     webView.getSettings().setAppCacheEnabled(true); 
     webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 

     showLoading(); 
     webView.setWebViewClient(new MyWebViewClient()); 

     webView.loadUrl(URL); 


     ActionBar actionbar = getActionBar(); 
     actionbar.setCustomView(R.layout.actionbar_top_like_facebook); 
     actionbar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 

     Button backButton = (Button) findViewById(R.id.buttonGeneralBack); 

     backButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       onBackPressed(); 
      } 
     }); 
    } 

    @Override 
    public void onBackPressed() { 
     finish(); 
     overridePendingTransition(R.anim.animation_slide_from_left, 
       R.anim.animation_slide_to_right); 
    } 

    public class MyWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) {   
      if(url.contains("something")) return true; 
      return false; 
     } 
     public void onPageFinished(WebView view, String url) { 
      hideLoading(); 
     } 
    } 

} 

回答

4

我已經解決了這一點,只是使用的System.out.println,看看哪個頁面洛做實後負荷

public class MyWebViewClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) {   
     if(url.contains("something")) return true; 
     return false; //Default is to not override unless our condition is met. 
    } 
    public void onPageFinished(WebView view, String url) { 
     hideLoading(); 
     //String webUrl = webView.getUrl(); 
     //System.out.println(webUrl); 
     if(url.startsWith("https://www.facebook.com/plugins/close_popup.php#_=_")){ 
      String redirectUrl = URL; 
      view.loadUrl(redirectUrl); 
      return; 
     } 
     super.onPageFinished(view, url); 
    } 
} 
+0

谷歌登錄可以使用「PostMessage的」作爲參數的redirectUrl, 更好的方法可能會啓用多窗口,而不是堅持使用webview並處理所有重定向自己。 看到這一個[鏈接](http://stackoverflow.com/questions/12648099/making-facebook-login-work-with-an-android-webview?rq=1) – Longwei

+0

我是一個noobe。剛剛從native.io製作了一個web應用程序。所以我很困惑在哪裏把這個代碼 –

+0

@AkashChauhan這個代碼可能已經過時了,而且這個代碼也用於Android開發(特別是java),如果你想創建像Web應用程序的按鈕,你不應該使用它。 – Casper