2011-12-20 31 views
7

Android geliştirmeye yeni başladım ve bu webview ve webview istemcisi beni öldürüyor. Android, varsayılan tarayıcı nedeniyle bir web görünümünde facebook yorumunu uygulayamıyor

  • kullanıcı Facebook'u kullanarak yorumunu tıkladığında, ben (o belirli url üzerinde yorum için kullanılır) facebook sosyal eklentisi içeren bir web sayfasını yüklemek zorunda

    1. ve bunun için WebView'ı kullanıyorum: Bu benim senaryodur/o giriş sayfası
    2. (yerine açılış varsayılan tarayıcı) Ve giriş başarılı olduğunda, ilk sayfa (sosyal eklentisi içeren bir) izin görüntülenecek olan aynı Web görünümündeki kullanıcı
    yorum yapmak verilecek olan

    Yapmam gereken şey kaşların çalışma sürecini taklit etmektir. Kullanıcı oturum açtığı zaman, otomatik olarak facebook yorum eklemek için izin verilir.

    Benim sorun: Ben tarayıcıdan tüm kimlik almak ve geri app Web görünümündeki bunu yönlendirmek için nasıl bilmiyorum

    . İstediğim şey, varsayılan tarayıcıya gitmektense, uygulama web görünümümdeki tüm işlemleri yapmak.

    Tüm yığın taşması sorularını kontrol ettim ve bunların çoğu Facebook bağlantı ve Facebook android SDK gibi açık kaynaklı Facebook eklentileriyle ilgili tavsiyelerde bulunuyor. Ayrıca, CookieManager, CookieSyncManager, WebViewClient, WebChromeClient hakkında bazı bilgiler aldım, ancak sorunumu uygulayamadım. Ve buldum yakın şudur: Eğer doğru yönde bana gelin

    How to handle facebook like with confirm in android webview

    Yani millet, ben çok memnun olurum. Hala tüm eylemleri bir web görünümünde nasıl yapacağımızı anlamaya çalışıyorum ve eğer bir şey gelirse mutlaka göndereceğim. peşin

    Güncelleme

    yılında

    sayesinde sadece facebook giriş uygulamak olabilir ama AOL, Hotmail ve Yahoo giriş uygulamak olamazdı. facebook giriş sadece özel WebViewClient ve yöntem shouldOverrideUrlLoading üzerinde oluşturmak için

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

    tekniği aşağıdaki Ben uygulayan çoklu girişi izin vermek ama hala bulmak için elimden geleni yapıyorum

    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; 
    

    çalışmıyor Çözüm ve dışarıda olan herkes bana minnettar olacak doğru yönde rehberlik ederdi. peşin Teşekkür

  • cevap

    11

    How to handle facebook like with confirm in android webview sağlanan cevap ben AndroidWebView html görüşlerin pop-up yüklemek varsayılan olarak sahip değildir yani öğrenilen Öyle far.What bulduk en iyi çözümdür ve bunun için de kullanmak gerekir Tüm bunları ele alan WebChromeClient.Aşağıdaki kodu bak

    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(); 
        } 
    } 
    

    Bu seferki Android WebView üzerinde Facebook Social Comment Plugin uygulamak yapması gereken tek şey ve biri herhangi bir kusur bulursa, o zaman ben it.and, bu çözüm kurtaracağını ümit düzeltmek için mutlu olurdu ve Benim gibi herhangi bir sorunlu geliştirici üzerinde zaman;)

    +0

    Bu kodda requestUrl ne olmalıdır .. –

    +0

    Lib klasörüne herhangi bir jar yüklemem gerekir mi? –

    +0

    Giriş yaptıktan sonra sayfayı yenilemeye devam ediyor. – Minion

    İlgili konular