howto poignée mailto: dans webview android
Je suis d'essayer d'intercepter les liens mailto: dans un intégré à webview dans mon application. Ce que j'ai est de travail ok, sauf lorsque l'utilisateur clique sur le lien il est flou lors du retour à l'app. Voici ce que je fais dans mon WebViewClient
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.startsWith("mailto:")){
url = url.replaceFirst("mailto:", "");
url = url.trim();
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("plain/text").putExtra(Intent.EXTRA_EMAIL, new String[]{url});
context.startActivity(i);
return true;
}
context.findViewById(R.id.loadingBar).setVisibility(View.VISIBLE);
view.loadUrl(url);
return true;
}
Si je fais un point de vue.reload (), il le fait de résoudre le problème, mais est-il une meilleure façon de le fixer sans gaspiller de la bande passante? J'ai essayé invalidate() mais ça ne fonctionne pas.
voici un exemple de ce dont je parle
floue? vous pouvez télécharger un exemple? Je ne savais même pas que android a un utilitaire pour le flou du texte.
yep, je suppose que le flou est une mauvaise formulation. Merci.
yep, je suppose que le flou est une mauvaise formulation. Merci.
OriginalL'auteur schwiz | 2010-09-02
Vous devez vous connecter pour publier un commentaire.
Ici est une version plus robuste de James Gray réponse.
Il doit pouvoir gérer plusieurs adresses séparées par des virgules), et de multiples " cc " et " bcc "paramètres":
C'est certainement mieux que ce que j'ai écrit à l'époque, et plus proche de ce que je voudrais écrire, maintenant que j'ai une tonne plus de connaissances sur la programmation. Merci de prendre le temps je n'ai pas.
Je voudrais changer la ligne de diviser le mailto sur"?". par exemple, --> String[] urlSections = url.split("\\?|&");
Semble être une bonne solution, mais ne devrions -;'t-il de la valeur.split(",") pas d'url.split(",") à l'intérieur de la boucle for?
OriginalL'auteur Neromancer
C'est ce que j'ai:
Puisque je ne peux pas voir le "avant" et après... Il semble que c'est la prise de loin (ou l'ajout) de l'attribut gras sur le lien - vérifier la CSS (peut-être que le JavaScript/Jquery) pour
a:visited
et voir si elle contient unfont-weight: normal;
oufont-weight: bold
attributs.C'est vraiment bizarre que la version d'android tu utilises? J'ai ça comme une page spécifique de l'enjeu? J'aimerais vérifier si il est à seulement 1 <a></a> - parce que lorsque vous cliquez sur le lien, il change le style css - on dirait que c'est
$('#elm_id).css('font-weight', 'normal');
(prise de distance (ou l'ajout) de l'attribut gras)Vous pouvez également utiliser setType("application/octet-stream") ou setType("message/rfc822") au lieu de setType("text/plain"). Aucun de ces vraiment étroites vers le bas pour applications seulement, mais message/rfc822 semble s'en rapprochent le plus.
Vous pouvez améliorer votre solution de cette façon: au lieu de la division de la chaîne, vous pouvez utiliser
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse(url));
et si vous n'avez plus besoin d'utiliseremailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{blah_email[1]});
OriginalL'auteur Wallter
Voici une version plus complexe que ne pas utiliser le MailTo classe (qui, pour une raison quelconque ne pas analyser complet d'un lien mailto correctement. Il tire email, cc, bcc, l'objet et le corps dans la succession tant qu'ils existent. S'ils n'existent pas, il saute et se déplace vers le prochain. Cela nécessite toutefois que le lien créateur de tout mettre en ordre, si son ordre, il ne fonctionnera pas. Je peut faire un autre plus tard pour ne pas les soins de quel ordre il est en.
Pour les soins, cela permet également des liens directs vers des applications en marché de travail.
OriginalL'auteur James Gray