2014-01-17 23 views
6

こんにちは私はこのURLを開けたかったhttp://3864.cloud-matic.net/私のアンドロイドwebviewから私は多くの方法を試しましたが、mainActivityを開くことさえできません。私が試したことは以下の通りです。アンドロイドのBasicAuthenticationが動作しません

public void onCreate(Bundle state) { 
    super.onCreate(state); 
    setContentView(R.layout.main); 
    WebView webView = (WebView) findViewById(R.id.webView1); 
    webView.setHttpAuthUsernamePassword("cloud-matic.net/",  "realm", username, password); 
    webView.loadUrl("http://3864.cloud-matic.net/"); 
} 

私が間違っているところを教えてください。 アリ

+0

「アプリケーションがmainActivityを開いていない」というエラーやクラッシュ、または空白の画面が表示されますか? – hypd09

+0

ログキャットを提供できますか? – PsyGik

+0

まず、 "realm"とは何かを尋ねる必要があります。それはsetHttpAuthUsernamePassword関数で使用されています。もしlogcatを共有する前に値がなければ? – Ali

答えて

20
webview.setWebViewClient(new MyWebViewClient()); 

private class MyWebViewClient extends WebViewClient { 
    @Override 
    public void onReceivedHttpAuthRequest(WebView view, 
      HttpAuthHandler handler, String host, String realm) { 
     handler.proceed("[email protected]", "mypassword"); 
    } 
} 

これは私がどこ示唆open.PleaseにURLを設定することを確認していないが、最も票を投じたソリューションです。

+0

'webView.loadUrl(" http://3864.cloud-matic .net/");' Webビュークライアントの設定後? –

+0

こんにちは、私はこれを私のonCreateメソッドで使っています。 webView.loadUrl( "http://3864.cloud-matic.net/"); webView.setWebViewClient(new MyWebViewClient()); – Ali

+0

'loadUrl'を呼び出すときにURLを' http:// 'にする必要があります。' webView.loadUrl( "http://3864.cloud-matic.net"); ' –

0

これは完全なコードスニペットである必要があります。

webView.getSettings().setJavaScriptEnabled(true); 
    webView.setFocusable(true); 
    webView.loadUrl("http://3864.cloud-matic.net/"); 
    webView.setWebViewClient(new WebViewClient() { 

     @Override 
     public void onReceivedHttpAuthRequest(WebView view, 
               HttpAuthHandler handler, String host, String realm) { 
      handler.proceed("[email protected]", "mypassword"); 
     } 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      super.onPageStarted(view, url, favicon); 
      prDialog.setMessage("Please wait ..."); 
      prDialog.show(); 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 
      if (prDialog != null) { 
       prDialog.dismiss(); 
      } 
     } 
    }); 
0

別のトピックの回答に基づいて、少し違った方法で作成しました。

このソリューションは、認証に失敗した場合(このような場合、「onReceivedHttpAuthRequest」をオーバーライドしたソリューションは動作していません)、正常なHTMLページをエラーなしで取得しているために表示されます。

String up = "yourusername"+":"+"yoursuperstrongpassword"; 
String authEncoded = new String(Base64.encodeBase64(up.getBytes())); 
String authHeader = "Basic "+authEncoded; 
Map<String, String> headers = new HashMap<>(); 
headers.put("Authorization", authHeader); 
myWebView.loadUrl("https://192.168.137.1:8443/tmedserver/doctor/doctorConsultations/consultationCall.mvc?consultationId=23", headers); 
関連する問題