public void onCreate(Bundle savedInstance)
{
super.onCreate(savedInstance);
setContentView(R.layout.show_voucher);
webView=(WebView)findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(true);
String url ="https://www.paymeon.com/Vouchers/?v=%C80%8D%B1x%D9%CFqh%FA%84%C35%0A%1F%CE&iv=%25%EE%BEi%F4%DAT%E1"
//webView.loadUrl(url); // Not Working... Showing blank
webView.loadUrl("http://www.yahoo.com"); // its working
}
Quando tento carregar uma URL no WebBView, ele só mostra uma tela em branco. Se eu carregar o Google.com ou o yahoo.com, está funcionando bem.
Respostas:
Visite este link:
Adicione este método de substituição à sua implementação WebViewClient. Você precisará compilá-lo com Android SDK 2.2 (API nível 8) ou posterior. O método aparece no SDK público a partir de 2.2 (API nível 8), mas nós o testamos em dispositivos executando 2.1, 1.6 e 1.5 e ele funciona nesses dispositivos também (então, obviamente, o comportamento sempre existiu).
isso vai te ajudar.
fonte
Your app(s) listed at the end of this email have an unsafe implementation of the WebViewClient.onReceivedSslError handler. Specifically, the implementation ignores all SSL certificate validation errors, making your app vulnerable to man-in-the-middle attacks.
Apps with vulnerabilities that expose users to risk of compromise may be considered Dangerous Products in violation of the Content Policy and section 4.4 of the Developer Distribution Agreement.
Por resposta correta por fargth, segue um pequeno exemplo de código que pode ajudar.
Primeiro, crie uma classe que estenda WebViewClient e que seja configurada para ignorar erros de SSL:
Em seguida, com seu objeto de visualização da web (iniciado no método OnCreate ()), defina seu cliente de visualização da web como uma instância da classe de substituição:
fonte
Para lidar adequadamente com a validação do certificado SSL e evitar a rejeição do aplicativo do Google de acordo com a nova Política de Segurança, altere seu código para invocar SslErrorHandler.proceed () sempre que o certificado apresentado pelo servidor atender às suas expectativas e invoque SslErrorHandler.cancel () caso contrário.
Por exemplo, adiciono uma caixa de diálogo de alerta para fazer com que o usuário tenha confirmado e pareça que o Google não mostra mais o aviso.
Após essas alterações não haverá aviso.
fonte
Remova o código abaixo que funcionará
fonte
substituir onReceivedSslError e remover
E para solucionar a segurança do Google:
O código completo é:
fonte
Copie e cole sua linha de código, mano, funcionará, confie em mim :) Estou pensando, você obteve um erro de SSL. Se você usar o método override onReceivedSslError e remover o método super, é super. Basta escrever handler.proceed (), o erro será resolvido.
fonte
onReceivedSslError
save my dayPara lidar com URLs SSL, o método onReceivedSslError () da classe WebViewClient. Este é um exemplo:
Você pode verificar meu exemplo completo aqui: https://github.com/Jorgesys/Android-WebView-Logging
fonte
Para solucionar a segurança do Google, faça o seguinte:
Linhas no topo:
Código:
fonte
Eu segui as respostas acima, mas ainda parece não estar funcionando para mim o código abaixo fez um truque para mim ao integrar gatways de pagamento que geralmente são solicitações https:
O código acima está fazendo uma solicitação de postagem em webview e redirecionando para o gateway de pagamento.
Definir
settings.setDomStorageEnabled(true);
fez um truque para mim Espero que isso ajude.fonte
webview.getSettings.setDomStorageEnabled(true);
, funcionou magicamente. Talvez a página da web esteja usando algum tipo de API HTML 5, então habilitar o DomStorage funcionou para mim.A abordagem recomendada será
1. Não chame o super método (Remova a super chamada do método substituído)
2. O Google recomenda chamar o método SslErrorHandler.cancel () se ocorrer algum erro
3. Não solicitar a caixa de diálogo para expor erros de SSL
Qual é a melhor solução ?? Remova este método de substituição
fonte
Definir essas duas propriedades foi suficiente para fazer funcionar para mim e não expõe a problemas de segurança:
fonte
Use esta linha webview.getSettings (). SetDomStorageEnabled (true) em seu código java
fonte
Caso você queira usar o APK fora da Google Play Store, por exemplo, privado, uma solução como a seguinte provavelmente funcionará:
Caso queira adicionar uma camada opcional adicional de segurança, você pode tentar fazer uso da fixação de certificado . IMHO isso não é necessário para uso privado ou interno difícil.
Se você planeja publicar o aplicativo na Google Play Store, deve evitar @Override onReceivedSslError (...) {...}. Especialmente usando handler.proceed (). O Google encontrará esse snippet de código e rejeitará seu aplicativo com certeza, pois a solução com handler.proceed () suprimirá todos os tipos de mecanismos de segurança integrados .
No meu caso, a cadeia de certificados SSL foi quebrada. Você pode testar rapidamente esses problemas com SSL Checker ou mais intermediário com SSLLabs . Mas, por favor, não me pergunte como isso pode acontecer. Eu não tenho absolutamente nenhuma ideia.
De qualquer forma, depois de reinstalar o certificado SSL, todos os erros referentes ao " certificado SSL não confiável em WebView qualquer " desapareceram finalmente. Eu também removi @Override para onReceivedSslError (...) e me livrei de handler.proceed () , e pronto, meu aplicativo não foi rejeitado pela Google Play Store (de novo).
fonte