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
}
Lorsque j'essaye de charger une URL dans WebBView, il n'affiche qu'un écran vide. Si je charge Google.com ou yahoo.com, cela fonctionne bien.
Réponses:
Veuillez visiter ce lien:
Ajoutez cette méthode de substitution à votre implémentation WebViewClient. Vous devrez le compiler avec Android SDK 2.2 (API niveau 8) ou version ultérieure. La méthode apparaît dans le SDK public à partir de la version 2.2 (API niveau 8) mais nous l'avons testée sur des appareils exécutant 2.1, 1.6 et 1.5 et elle fonctionne également sur ces appareils (donc évidemment, le comportement a toujours été là).
cela vous aidera.
la source
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.
Par bonne réponse de fargth, voici un petit exemple de code qui pourrait vous aider.
Tout d'abord, créez une classe qui étend WebViewClient et qui est définie pour ignorer les erreurs SSL:
Ensuite, avec votre objet de vue Web (initié dans la méthode OnCreate ()), définissez son client de vue Web comme une instance de la classe de remplacement:
la source
Pour gérer correctement la validation du certificat SSL et éviter le rejet d'application de Google conformément à la nouvelle politique de sécurité, modifiez votre code pour appeler SslErrorHandler.proceed () chaque fois que le certificat présenté par le serveur répond à vos attentes, et appelez SslErrorHandler.cancel () dans le cas contraire.
Par exemple, j'ajoute une boîte de dialogue d'alerte pour que l'utilisateur ait confirmé et semble que Google n'affiche plus d'avertissement.
Après ces changements, il n'affichera pas d'avertissement.
la source
Supprimez le code ci-dessous, cela fonctionnera
la source
remplacer onReceivedSslError et supprimer
Et pour résoudre la sécurité de Google:
Le code complet est:
la source
Copiez et collez votre ligne de code bro, cela fonctionnera croyez-moi :) Je pense que vous obtenez une erreur ssl. Si vous utilisez la méthode override onReceivedSslError et supprimez super c'est la super méthode. Écrivez simplement handler.proceed (), l'erreur résoudra.
la source
onReceivedSslError
Save my dayPour gérer les URL SSL, utilisez la méthode onReceivedSslError () de la classe WebViewClient, voici un exemple:
Vous pouvez consulter mon exemple complet ici: https://github.com/Jorgesys/Android-WebView-Logging
la source
Pour résoudre la sécurité de Google, procédez comme suit:
Lignes vers le haut:
Code:
la source
J'ai suivi les réponses ci-dessus mais cela ne semble pas fonctionner pour moi ci-dessous, le code m'a fait un truc lors de l'intégration de passerelles de paiement qui sont généralement des requêtes https:
Le code ci-dessus fait une demande de publication dans la vue Web et redirige vers la passerelle de paiement.
Le réglage a
settings.setDomStorageEnabled(true);
fait un tour pour moi J'espère que cela aide.la source
webview.getSettings.setDomStorageEnabled(true);
cela a fonctionné comme par magie. Peut-être que la page Web utilise une sorte d'API HTML 5, donc activer DomStorage a fonctionné pour moi.L'approche recommandée sera
1. N'appelez pas la méthode super (Supprimez l'appel super de la méthode remplacée)
2.Google recommande d'appeler la méthode SslErrorHandler.cancel () si une erreur survient
3. Ne pas demander de dialogue pour exposer les erreurs SSL
Quelle est la meilleure solution ?? Supprimer cette méthode de remplacement
la source
La définition de ces deux propriétés a suffi à le faire fonctionner pour moi et ne présente pas de problèmes de sécurité:
la source
Utilisez cette ligne webview.getSettings (). SetDomStorageEnabled (true) dans votre code java
la source
Si vous souhaitez utiliser l'APK en dehors du Google Play Store, par exemple, une solution privée comme celle-ci fonctionnera probablement:
Si vous souhaitez ajouter une couche de sécurité facultative supplémentaire, vous pouvez essayer d'utiliser l' épinglage de certificat . IMHO ce n'est pas nécessaire pour un usage privé ou interne difficile.
Si vous prévoyez de publier l'application sur le Google Play Store, vous devez éviter @Override onReceivedSslError (...) {...}. Surtout en utilisant handler.proceed (). Google trouvera cet extrait de code et rejettera votre application à coup sûr puisque la solution avec handler.proceed () supprimera toutes sortes de mécanismes de sécurité intégrés .
Dans mon cas, la chaîne de certificats SSL était rompue. Vous pouvez tester rapidement ces problèmes avec SSL Checker ou plus intermédiaire avec SSLLabs . Mais ne me demandez pas comment cela peut arriver. Je n'ai absolument aucune idée.
Quoi qu'il en soit, après la réinstallation du certificat SSL, toutes les erreurs concernant le " certificat SSL non approuvé dans WebView que ce soit " ont finalement disparu. J'ai également supprimé le @Override pour onReceivedSslError (...) et me suis débarrassé de handler.proceed () , et voila mon application n'a pas été rejetée par Google Play Store (encore une fois).
la source