如何处理mailto:在android webview中

如何处理mailto:在android webview中,第1张

概述我试图在我的应用程序中拦截嵌入式webview中的mailto:链接.我所拥有的工作正常,除非用户按下链接时返回应用程序时模糊.这是我在WebViewClient中所做的事情@OverridepublicbooleanshouldOverrideUrlLoading(WebViewview,Stringurl){if(url.startsWith("mailto:"))

我试图在我的应用程序中拦截嵌入式webvIEw中的mailto:链接.我所拥有的工作正常,除非用户按下链接时返回应用程序时模糊.这是我在WebVIEwClIEnt中所做的事情

    @OverrIDepublic 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;}

如果我做一个vIEw.reload()它确实解决了问题,但有没有更好的方法来修复它而不浪费带宽?我尝试了invalIDate()但它没有用.

这是我正在谈论的一个例子

解决方法:

这是James Gray的答案的更强大版本.
它应该处理多个地址(以逗号分隔)和多个’cc’/’bcc’参数:

@OverrIDepublic boolean shouldOverrIDeUrlLoading(WebVIEw vIEw, String url) {  if (url == null) {    return false;  }  if (url.startsWith("market://")) {    vIEw.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));    return true;  }  if (url.startsWith("mailto:")) {    try {      List<String> to = new ArrayList<String>();      List<String> cc = new ArrayList<String>();      List<String> bcc = new ArrayList<String>();      String subject = null;      String body = null;      url = url.replaceFirst("mailto:", "");      String[] urlSections = url.split("&");      if (urlSections.length >= 2) {        to.addAll(Arrays.asList(urlSections[0].split(",")));        for (int i = 1; i < urlSections.length; i++) {          String urlSection = urlSections[i];          String[] keyvalue = urlSection.split("=");          if (keyvalue.length == 2) {            String key = keyvalue[0];            String value = keyvalue[1];            value = URLDecoder.decode(value, "UTF-8");            if (key.equals("cc")) {              cc.addAll(Arrays.asList(url.split(",")));            }            else if (key.equals("bcc")) {              bcc.addAll(Arrays.asList(url.split(",")));            }            else if (key.equals("subject")) {              subject = value;            }            else if (key.equals("body")) {              body = value;            }          }        }      }      else {        to.addAll(Arrays.asList(url.split(",")));      }      Intent emailintent = new Intent(androID.content.Intent.ACTION_SEND);      emailintent.setType("message/rfc822");      String[] dummyStringArray = new String[0]; // For List to array conversion      emailintent.putExtra(androID.content.Intent.EXTRA_EMAIL, to.toArray(dummyStringArray));      if (cc.size() > 0) {        emailintent.putExtra(androID.content.Intent.EXTRA_CC, cc.toArray(dummyStringArray));      }      if (bcc.size() > 0) {        emailintent.putExtra(androID.content.Intent.EXTRA_BCC, bcc.toArray(dummyStringArray));      }      if (subject != null) {        emailintent.putExtra(androID.content.Intent.EXTRA_SUBJECT, subject);      }      if (body != null) {        emailintent.putExtra(androID.content.Intent.EXTRA_TEXT, body);      }      vIEw.getContext().startActivity(emailintent);      return true;    }    catch (UnsupportedEnCodingException e) {      /* Won't happen*/    }  }  return false;}
总结

以上是内存溢出为你收集整理的如何处理mailto:在android webview中全部内容,希望文章能够帮你解决如何处理mailto:在android webview中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1115864.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存