android webview mailto,如何处理mailto:在android webview中
我试图在我的应用程序中拦截嵌入式webview中的mailto:链接.我所拥有的工作正常,除非用户按下链接时返回应用程序时模糊.这是我在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;
}
如果我做一个view.reload()它确实解决了问题,但有没有更好的方法来修复它而不浪费带宽?我尝试了invalidate()但它没有用.
这是我正在谈论的一个例子
解决方法:
这是James Gray的答案的更强大版本.
它应该处理多个地址(以逗号分隔)和多个’cc’/’bcc’参数:
@Override
public 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 to = new ArrayList();
List cc = new ArrayList();
List bcc = new ArrayList();
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;
}
标签:android-webview,android
来源: https://codeday.me/bug/20190722/1497595.html
android webview mailto,如何处理mailto:在android webview中相关推荐
- android webview mailto,Webview email link (mailto)
问题 I have a view and view the site has malito code to send email. When I open the link opens in an e ...
- Android 网络编程系列(3)WebView 详解
前言 在上一篇关于WebView的文章中,介绍了 WebView 的基本使用方法.WebView 页面处理和历史记录以及和 JS 调用本地代码的相关内容.今天就在上一篇文章的基础上,补充一些 WebV ...
- 转 Android开发学习笔记:浅谈WebView
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://liangruijun.blog.51cto.com/3061169/647456 ...
- android 获取位置数据库,尝试从webview获取位置时,Android“SQLite数据库无法从/CachedGeoposition.db加载”错误...
我正在创建一个使用webkit和chrome客户端的android应用程序.我希望能够在网页请求时获取当前位置.我设置的网页适用于普通浏览器就好了.然而,当我尝试访问该网页WebKit中,我不断收到此 ...
- Android开发之WebView加载html数据去除Webview滚动条的方法
老套路看图: 这是通过webview加载HTML源码显示的网页:加载方法如下: webview.loadDataWithBaseURL(null, htmlData, "text/html& ...
- Android开发之带进度条的WebView
老套路先看效果: 直接上代码: 区分java和kotlin版本 Java版本: package com.example.progresswebview;import android.os.Bundle ...
- Android开发继承webview,WebView如何从当前的Android主题继承颜色?
此问题最初发布在谷歌版主上,用于上周举行的AndroidDev办公时间环聊.问题实际上是现场回答,如果你愿意,你可以在这里观看.我在这里发帖,因为他们似乎对它很感兴趣,而且我有更多的空间来详细阐述. ...
- android设置webview缓存目录,Android基础入门教程——7.5.5 WebView缓存问题
Android基础入门教程--7.5.5 WebView缓存问题 Android基础入门教程 本节引言:现在很多门户类信息网站,比如虎嗅,ifanr,钛媒体等等的APP,简单点说是信息阅读类的APP, ...
- android 的导入crosswalk 用xwalkview 替换webview
用过webvIew开发的各位伙伴应该知道,同样的html代码在ios手机上运行无压力,但是在android手机上运行,慢的要死.还会有各种奇怪的蛋碎问题.后来查阅了很多文章,决定使用crosswalk ...
最新文章
- Java Spring MVC项目搭建(三)——“Hello World”
- 设计模式-职责链模式
- 查看linux文件系统结构,如何查看Linux系统架构类型
- 数据结构(哈夫曼树,哈夫曼编码)入门篇,JAVA实现
- jax-rs jax-ws_快速浏览JAX-RS请求与方法匹配
- 2019大数据课程_根据数据,2019年最佳免费在线课程
- 好系统教你如何在Windows中更改文件夹的图标
- TCP连接的99号和110号错误
- linux学习第四周作业练习
- 【openMV】霍夫变换---直线提取
- vue 使用tracking.js开发人脸识别功能
- 3D角色遮挡住UI的实现,关于Stencil Buffer,描边,以及其他
- Java 驼峰命名转下划线命名(能正确处理连续HTTP等大写)
- 南京大学计算机信息安全专业,信息安全专业按实力划分为九类,看看你喜欢的院校属于哪一类...
- python 马赛克还原_python实现图片马赛克处理
- 教研室课题---卫星通信系统
- 【小样本分割 2020 TPAMI 】PFENet
- GBDT+XGBoost算法详解(下):XGBoost
- jquery表格隔行变色
- MySQL的批量更新和批量新增优化
热门文章
- 疯狂Java讲义(八)----第一部分
- 重写highlighted改变按钮的按下状态、
- Greenplum数据库源码学习——BackgroundWorker框架
- 蓝桥杯真题 包子凑数 c++代码实现 小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有 N 种蒸笼,其中第 i种蒸笼恰好能放 Ai个包子。
- 【NOJ1144】【算法实验二】农场灌溉问题
- H3C Switch S1848G端口限速
- 2016 GIAC全球互联网架构大会圆满结束,全部PPT开放下载
- Android dependencies External Libraries 依赖包存放路径
- oracle dba_profile,Oracle之dba_profiles解析
- oracle dataguard 日志传输,dataguard不传输日志的问题