2013-10-26 43 views
0

我的登錄webview未在android中加載。但幾個月前它沒有問題。 我也寫了一個項目,從android訪問foursquare。 https://github.com/goutomroy/DroidSquare/blob/master/README.md
當我嘗試加載webview時,發現消息: 「與服務器的連接失敗」 我的錯在哪裏?foursquare授權url未在android webview中加載

@SuppressLint("SetJavaScriptEnabled") 
private void setUpWebView() { 

    String URL_LOGIN = "https://foursquare.com/oauth2/authenticate?" 
      + "client_id="+ FoursquareConstants.CLIENT_ID 
      + "&response_type=code" 
      + "&display=touch" 
      + "&redirect_uri=" + FoursquareConstants.URL_CALLBACK; 

    CookieSyncManager.createInstance(activity); 
    CookieManager cookieManager = CookieManager.getInstance(); 
    cookieManager.acceptCookie(); 
    cookieManager.removeAllCookie(); 

    webView = new WebView(getContext()); 
    WebSettings settings = webView.getSettings(); 
    settings.setJavaScriptEnabled(true); 
    settings.setDomStorageEnabled(true); 
    settings.setLoadWithOverviewMode(true); 
    settings.setUseWideViewPort(true); 
    settings.setBuiltInZoomControls(true); 
    settings.setPluginState(PluginState.ON); 
    webView.setVerticalScrollBarEnabled(true); 
    webView.setHorizontalScrollBarEnabled(true); 
    webView.setWebViewClient(new FoursquareWebViewClient()); 
    webView.loadUrl(URL_LOGIN); 
    setContentView(webView); 
} 

class FoursquareWebViewClient extends WebViewClient { 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     return false; 
    } 
    @Override 
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
     Log.d("onReceivedError", errorCode +" : "+description+ " : " + failingUrl); 
     super.onReceivedError(view, errorCode, description, failingUrl); 

     dismissProgressDialog(); 
     LoginDialog.this.dismiss(); 
     responseHandler.onError(description); 
    } 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 

     Log.d("onPageStarted", url); 
     super.onPageStarted(view, url, favicon); 

     if(flag) 
      return; 
     else if (url.startsWith(FoursquareConstants.URL_CALLBACK)) { 
      flag = true; 
      String urls[] = url.split("="); 
      responseHandler.onSuccess(urls[1]); 
      LoginDialog.this.dismiss(); 
      return; 
     } 

     else 
      showOrUpdateProgressDialog("Loading..."); 

    } 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     Log.d("onPageFinished", url); 
     super.onPageFinished(view, url); 

     dismissProgressDialog(); 
    } 

    @Override 
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { 
     Log.d("onReceivedSslError", "error"); 
     handler.proceed(); // Ignore SSL certificate errors 
    } 
} 
+0

檢查Internet權限你是否在你的清單文件中添加'INTERNET'許可? – GrIsHu

+0

@GrIsHu是的,我已經添加了互聯網權限。 – goutom

回答

3

你應該在清單文件

<manifest xlmns:android...> 
... 
<uses-permission android:name="android.permission.INTERNET"></uses-permission> 
</manifest>