2011-12-20 22 views
7

के कारण वेब दृश्य में फेसबुक टिप्पणी को लागू करने में असमर्थ रहा Android विकास और इस वेबव्यू और वेबव्यू ग्राहक के लिए नौसिखिया मुझे मार रहा है कर रहा हूँ।एंड्रॉयड डिफ़ॉल्ट ब्राउज़र

  1. मैं एक वेब पेज जो फेसबुक सामाजिक प्लगइन (उस विशेष यूआरएल पर टिप्पणी के लिए इस्तेमाल किया) शामिल हैं लोड करने के लिए है और मैं इसके लिए WebView का उपयोग कर रहा
  2. उपयोगकर्ता फेसबुक का उपयोग टिप्पणी क्लिक करता है, वह: यह मेरा परिदृश्य है/वह एक ही वेबव्यू (उद्घाटन डिफ़ॉल्ट ब्राउज़र के बजाय)
  3. और एक बार लॉगिन सफल होता है, पहले पृष्ठ (सामाजिक प्लगइन युक्त एक) की अनुमति के प्रदर्शित करने के लिए है पर प्रवेश पृष्ठ उपयोगकर्ता टिप्पणी करने के लिए
दिए जाने की है

मुझे जो करना है वह brows की कार्यप्रणाली को अनुकरण करना है er.e. उपयोगकर्ता लॉग इन करते समय, उसे स्वचालित रूप से फेसबुक टिप्पणी जोड़ने की अनुमति दी जाती है।

मेरे समस्या:

मैं कैसे ब्राउज़र से प्रमाणीकरण प्राप्त है और इसे वापस मेरे ऐप वेबव्यू पर रीडायरेक्ट करने पता नहीं है। मैं चाहता हूं कि डिफ़ॉल्ट ब्राउज़र पर जाने के बजाय मेरे ऐप वेबव्यू में सभी प्रक्रियाएं करें।

मैं सभी ढेर अतिप्रवाह सवाल जाँच की है और उनमें से ज्यादातर खुला स्रोत फेसबुक जैसी फेसबुक प्लगइन्स कनेक्ट करने और फेसबुक एंड्रॉयड SDK का उपयोग करने की सलाह। इसके अलावा मैं CookieManager, CookieSyncManager, WebViewClient, WebChromeClient पर कुछ जानकारी मिल गया लेकिन मैं अपने मुद्दे पर लागू नहीं कर सका। और करीबी मैंने पाया यह है:

How to handle facebook like with confirm in android webview

तो लोगों अगर तुम मुझे सही दिशा में बात कर सकता है, मैं बहुत खुशी होगी। मैं अभी भी यह समझने की कोशिश कर रहा हूं कि वेबव्यू पर सभी कार्यवाही कैसे करें और यदि कुछ भी आता है तो मैं निश्चित रूप से पोस्ट करूंगा।

अग्रिम

अद्यतन

धन्यवाद मैं केवल facebook लॉगिन लागू सकता है, लेकिन AOL, Hotmail और Yahoo लॉगिन लागू नहीं कर सका। के लिए facebook लॉगिन सिर्फ एक कस्टम WebViewClient और विधि shouldOverrideUrlLoading पर बनाने

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

एकाधिक लॉगिन तकनीक निम्नलिखित मैं लागू कर दिया है अनुमति देने के लिए, लेकिन यह

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; 

मैं अभी भी अपने सबसे अच्छा कर रहा हूँ लगता है काम नहीं करता है समाधान, और वहां से कोई भी मुझे उचित दिशा में मार्गदर्शन करेगा जो आभारी होगा। अग्रिम धन्यवाद

उत्तर

11

How to handle facebook like with confirm in android webview पर उपलब्ध कराई जवाब सबसे अच्छा समाधान मैं बहुत far.What पाया है मुझे पता चला कि AndroidWebView एचटीएमएल विचारों का पॉपअप लोड डिफ़ॉल्ट रूप से नहीं करता है और उस के लिए हम उपयोग करने की आवश्यकता WebChromeClient जो इन सभी को संभालता है।निम्नलिखित कोड को देखो

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

यह सब एक Android WebView पर Facebook Social Comment Plugin लागू करने के लिए करना है और यदि किसी इसे में किसी भी दोष पाता है, तो मैं सही करने के लिए है.और आशा, इस समाधान की बचत होगी खुशी होगी और मेरे जैसे किसी भी परेशान डेवलपर पर समय;)

+0

अनुरोध क्या होना चाहिए इस कोड में यूआरएल .. –

+0

क्या मुझे lib फ़ोल्डर में कोई जार स्थापित करने की आवश्यकता है? –

+0

लॉगिन के बाद पेज को रीफ्रेश करना जारी रखता है। – Minion

संबंधित मुद्दे